0

大量のデータを含むテキストファイルがあります。このテキストファイルの特定のインスタンスで、次の文字を置き換えようとしています:A-> G、C-> Tなど。基本的に、ファイルを読み取る必要があることはわかっています。ファイルの行を検索します。これらの文字の出現箇所を見つけて、置き換えます。基本的に->ACTGはGTCAになるはずです。

これまでの私のコードは次のとおりです。

f = open("actg.txt", "r")

table = str.maketrans("actgACTG", "gtcagtca")

print(f.read().translate(str.maketrans('ACTGactg','gtcagtca')))


print(table)

ここでのこの出力は正しく機能しています。ただし、ファイル全体でそのような文字のすべてのインスタンスが変更されます。

この特定のシーケンスにあるときにのみ文字をこのように変更したい場合はどうなりますか?それ以外の場合は、そのまま、ファイル全体のすべての「a」とすべての「g」が変更されます。通常の文をそのままにして、この特定の種類のシーケンスが存在する場合にのみこの変更を行いたいと思います。

4

3 に答える 3

0

(Python 2.x)または(Python 3.x)str.translateと組み合わせて使用​​できます。string.maketransstr.maketrans

Python 2.x:

>>> import string
>>> instring = 'ABCD'
>>> instring.translate(string.maketrans('ACac','gtgt'))
'gBtD'

Python 3.x:

>>> instring = 'ABCD'
>>> instring.translate(str.maketrans('ACac','gtgt'))
'gBtD'

translate256文字のマッピングテーブルが必要です。これはstring.maketrans、2番目の引数文字列の対応する文字にマップされる最初の引数文字列の文字を除いて、各文字をそれ自体にマッピングして作成するものです。

于 2013-02-13T17:29:23.030 に答える
0

Python 2:

>>> from string import maketrans
>>> table = maketrans("acgtACGT", "gtcagtca")

Python 3:

>>> table = str.maketrans("acgtACGT", "gtcagtca")

両方:

>>> "acGTagTTcGTAC".translate(table)
'gtcagcaatcagt'
于 2013-02-13T17:30:41.947 に答える
0

re libを使用して、大文字と小文字を同時に変更できます。

In [3]: re.sub('[Aa]', 'g', 'HAllat')
Out[3]: 'Hgllgt'

これがドキュメントです

于 2013-02-13T17:31:27.127 に答える