使用python将文件拆分为新行

2024-06-25 23:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一个包含制表符分隔的单词列表的文件拆分成一个单词前加数字的“list”。在

因此,如果输入文件包含以下内容(单词之间的空格是制表符): 树车屋毯子

我想要这个输出:

1 tree
2  car
3  house
4 blanket

我的代码可以打印出“单词列表”,但不知道如何在单词前面找到计数器:

^{pr2}$

谢谢


Tags: 文件代码tree列表计数器数字单词car
3条回答
import csv
import itertools

with open('commonwords.tsv') as infile, open('/path/to/output', 'w') as outfile:
    writer = csv.writer(outfile, delimiter='\t')
    count = itertools.count(1)
    for row in csv.reader(infile, delimiter'\t'):
        for word in row:
            writer.writerow([next(count), word])

enumerate函数可以为您计数单词,但您需要一个迭代器或单词列表,而不仅仅是文件的行数。下面是一个生成器,它遍历csv文件的行并分别输出每个列。它通过枚举得到结果。在

import csv

def yield_col(reader):
    for row in reader:
        for item in row:
            yield item

with open ("commonwords.tsv") as fp:
    reader = csv.reader(fp, dialect='excel-tab')
    for num, word in enumerate(yield_col(reader), 1):
        print num, word

您可以使用enumerate

import csv
with open("commonwords.tsv") as f:
    for line in f:
        line = line.replace("\t", "\n")
        for ind, word in enumerate(line.split(), 1):
            print "{0} {1}".format(ind, word)
1 tree
2 car
3 house
4 blanket

不确定是希望计数重置每行还是继续到末尾:

^{pr2}$

也可以直接拆分而不替换:

with open("commonwords.tsv") as f:
    lines = f.read().split()
    for ind, word in enumerate(lines, 1):
        print "{0} {1}".format(ind, word)

相关问题 更多 >