gpt4 book ai didi

python - 使用 python 中的列表查找和替换 csv 字符串

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:23 24 4
gpt4 key购买 nike

到目前为止,我有这个。

import csv

ifile = open('file', 'rb')
reader = csv.reader(ifile,delimiter='\t')
ofile = open('file', 'wb')
writer = csv.writer(ofile, delimiter='\t')


findlist = ['A', 'G', 'C', 'T', 'Y', 'R', 'W', 'S', 'K', 'M', 'X', 'N', '-']
replacelist = ['AA', 'GG', 'CC', 'TT', 'CT', 'AG', 'AT', 'GC', 'TG', 'CA',
'NN', 'NN', '-']

rep = dict(zip(findlist, replacelist))

def findReplace(find, replace):
s = ifile.read()
s = s.replace(find, replace)
ofile.write(s)

for item in findlist:
findReplace(item, rep[item])

ifile.close()
ofile.close()

它所做的是将 A 替换为 AA。然而,我想要的是用 replacelist 中的字母替换所有字母。我是 python 的新手,不太明白为什么它没有替换所有内容。

HE670865    399908  N   N   N   N   N
HE670865 399910 N N N N N
HE670865 399945 T T N T T
HE670865 399951 R R N A A
HE670865 399957 A A N A A
HE670865 399978 C C C M C
HE670865 399980 C C C C C
HE670865 399982 T T T T K
HE670865 399984 C C C C C


HE670865 399908 N N N N N
HE670865 399910 N N N N N
HE670865 399945 T T N T T
HE670865 399951 R R N AA AA
HE670865 399957 AA AA N AA AA
HE670865 399978 C C C M C
HE670865 399980 C C C C C
HE670865 399982 T T T T K
HE670865 399984 C C C C C

最佳答案

这是因为你在循环内读写。

rep = dict(zip(findlist, replacelist))

s = ifile.read()
for item in findlist:
s = s.replace(item, rep[item])
ofile.write(s)

此外,我认为如果不使用不必要的 dict,您的代码将更具可读性(也更简洁)。

s = ifile.read()
for item, replacement in zip(findlist, replacelist):
s = s.replace(item, replacement)
ofile.write(s)

关于python - 使用 python 中的列表查找和替换 csv 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19748676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com