1

我刚开始编程,所以我有点菜鸟。

我正在尝试使用 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()

粗体部分是我现在的问题。有什么建议么?提前致谢。

4

2 回答 2

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]))
于 2012-06-27T14:08:28.100 回答
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])
于 2012-06-27T14:31:48.857 回答