我刚刚开始编程,因此我有点像菜鸟。
我正在尝试使用python从.txt表中删除列。所有列都由制表符分隔。 这是一个示例行:
100226.SCO0401 1 440 COG0001 glutamate-1-semialdehyde 2,1-aminomutase
我想删除第四个标签后的行中的所有文本(“谷氨酸-1-半醛2,1-氨基变位酶”部分)。
我见过一些人导入csv来解决这个问题,但我想的是一些简单的事情:
def remove(infilename, outfilename):
# Open original file and output file
infile = open(infilename, 'rt')
outfile = open(outfilename, 'wt')
# Read lines and remove annotation
for line in infile:
outfile.write(line['**everything-until-the-fourth-tab**']
# Close files
infile.close()
outfile.close()
大胆的部分是我现在的问题。有什么建议? 提前谢谢。
答案 0 :(得分:2)
使用.split('\t')
将行中的条目拆分为数组。然后,您可以使用[:4]
对数组进行切片,仅保留前4个元素。最后,再次使用'\t'.join
for line in infile:
columns = line.split('\t')
columns = columns[:4]
outfile.write('\t'.join(columns))
作为一个单行:
for line in infile:
outfile.write('\t'.join(line.split('\t')[:4]))
答案 1 :(得分:0)
我提交使用csv
模块可能是最简单的解决方案:
with open(infilename, 'rb') as infile, open(outfilename, 'wb') as outfile:
writer = csv.writer(outfile, delimiter='\t')
for row in csv.reader(infile, delimiter='\t'):
writer.writerow(row[:4])