0

2 つの特定の文字列の間の文字列を探すのに役立つコードを Python で記述しようとしています。単一の文字列でコードを実装すると、目的の出力が得られます。ただし、シーケンスの配列でパターンを一致させる必要があります。エラーが発生し続けます。

ユーザーが指定した 2 つのシーケンスの間のパターンを探す関数を定義します。

import re
def find_between(prefix, suffix, text):
pattern = r"{}\s*(.*)\s*{}".format(re.escape(prefix), re.escape(suffix))
result = re.search(pattern, text, re.DOTALL)
if result:
    return result.group(1)
else:
    return None

単一の文字列を試してみると、うまくいきます:

text = "AGGTCCTGTAAACCT"
prefix = "TCCT"
suffix = "ACCT"
find_between(prefix, suffix, text)

出力: 'GTAA'

しかし、fastq ファイルを読み取って検索を実装しようとすると、次のようになりません。

seqs = readFastq('FN1.fastq')

text = seqs
prefix = "TCCT"
suffix = "ACCT"
find_between(prefix, suffix, text)

このエラーが表示されます

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-26-9c35672e7561> in <module>()
  2 prefix = "TCCT"
  3 suffix = "ACCT"
----> 4 find_between(prefix, suffix, text)

<ipython-input-19-5f42599c717f> in find_between(prefix, suffix, text)
  3 def find_between(prefix, suffix, text):
  4     pattern = r"{}\s*(.*)\s*{}".format(re.escape(prefix),     re.escape(suffix))
----> 5     result = re.search(pattern, text, re.DOTALL)
  6     if result:
  7         return result.group(1)

/Users/shravantikrishna/anaconda/lib/python3.6/re.py in search(pattern, string, flags)
180     """Scan through string looking for a match to the pattern, returning
181     a match object, or None if no match was found."""
--> 182     return _compile(pattern, flags).search(string)
183 
184 def sub(pattern, repl, string, count=0, flags=0):

TypeError: expected string or bytes-like object
4

1 に答える 1