我是Python的初学者,我有点陷入一个微不足道的问题。我想从文本文件中删除一些列和字符串。它是制表符分隔的。 第一个文件名为A.txt
chr1_1792868_SNP Bcin01g04980 NON_SYNONYMOUS NON_SYNONYMOUS[T](gene:Bcin01g04980|transcript:Bcin01g04980.1|P->S:225) C T C/C C/C C/C C/C C/C C/T 234 233 232 219 233 221 234 233 232 219 233 23 0 0 0 0 0 198
输出文件(我们称之为B.txt)应该是:
1 1792868 Bcin01g04980 C T C/C C/C C/C C/C C/C C/T 234 233 232 219 233 221 234 233 232 219 233 23 0 0 0 0 0 198
所以它将执行不同的操作:
到目前为止,我试过这样做:
with open ('A.txt', 'r') as mutmut_mutants:
dble_mut = csv.reader(mutmut_mutants, delimiter='\t')
with open('B.txt', 'w+') as mutants_coo:
mut_coo= csv.writer(mutants_coo)
for i in dble_mut:
del i[2]
del i[3]
mut_coov.writerow( i )
但是,令人惊讶的是,它不起作用。而且我没有将第一个字符串分成2列。任何人都知道如何进行?
非常感谢!
答案 0 :(得分:1)
你可以试试这个:
body {
background:
linear-gradient(-120deg, transparent 63%, #fff 63%),
linear-gradient(120deg, transparent 63%, #fff 63%),
linear-gradient(to bottom, blue, blue);
background-size: 90px 50px;
background-repeat: repeat-x;
}
输出:
f = open('data.txt').readlines()
f = [i.strip('\n').split() for i in f]
new_data = []
for i in f:
data1 = i[0].split("_")
new = data1[0][-1]+" "+data1[1]+" "
new += i[1]+" "
new += ' '.join(i[4:])
new_data.append(new)
print new_data[0]
答案 1 :(得分:0)
可能的解决方案:
with open('A.txt', 'r') as f:
data=f.read()
columns = data.split('\t')
result = []
temp = columns[0].split('_')
result.append(temp[0][-1])
result.append(temp[1])
result.extend(columns[4:])
print result
答案 2 :(得分:0)
感谢上面提供的代码(感谢@ Ajax1234和@doctorlove),我设法在列表中拥有了我想要的东西。我在将其正确保存到文件中时遇到了一些麻烦。我希望它以制表符分隔,并将列表的每个元素作为新行。 代码是
f = open('mutmut_mutants.txt').readlines()
f = [i.strip('\n').split() for i in f]
new_data = []
for i in f:
data1 = i[0].split("_")
new = data1[0][-1]+" "+data1[1]+" "
new += i[1]+" "
new += ' '.join(i[4:])
new_data.append(new)
print new_data
outfile = open("test.txt", "w")
print >> outfile, "\t".join(str(i) for i in new_data)
outfile.close()
我的new_data列表如下所示:
['1 1792868 Bcin01g04980 CTC / CC / CC / CC / CC / CC / T 234 233 232 219 233 221 234 233 232 219 233 23 0 0 0 0 0 198','1 1792869 Bcin01g04980 CTC / CC / TC / TC / TC / TC / T 240 236 233 220 232 220 240 96 66 80 30 25 0 140 166 140 202 194','2 19718 Bcin02g00005 CAC / AC / AC / AC / AC / AC / A 86 51 78 84 87 108 63 38 58 60 63 86 22 13 20 24 24 22','....','....','...']
文本文件中的输出看起来没问题,除了列表中每个元素末尾没有新行:
1 1792868 Bcin01g04980 C T C / C C / C C / C C / C C / C C / T 234 233 232 219 233 221 234 233 232 219 233 23 0 0 0 0 0 198 1 1792869 Bcin01g04980 ...
感谢您的帮助!