1

我目前正在开发一个在“|”处拆分平面文件的程序 符号并将每个实体分隔为代码中定义的新对象。它看起来像这样:

    results = 0
    searchphrase = input("Search: ")
    with open('file.dat', 'r', encoding='utf8') as info_1:
        for line in info_1:
            a, b, c, d, e, f, g, h, i, j, k, l, m = line.split('|')
            if searchphrase in a:
                results +=1
                print(results, a + '|' + b + '|' + c etc.)

编辑 1

这是不工作的程序版本,并给我错误消息need more than 1 value to unpack,解决该a, b, c, d, e, f, g, h, i, j, k, l, m = line.split('|')行。

我正在调用的文件中的数据格式如下:

a|b|c|d|e|f|g|h|i|j|k|l|m

是否有理由将其解释为单行而不是将每个实体分散到自己的对象中?当我这样做时,程序运行良好:

results = 0
searchphrase = input("Search: ")
with open('file.ext', 'r', encoding='utf8') as info_1:
    for line in info_1:
        a = line.split('|')
        if searchphrase in a:
            results +=1
            print(results, a)

但我希望人们能够根据文件的特定列搜索信息(即搜索 a 以获取 x,搜索 d 以获取 y 等)。我该怎么做呢?

4

1 回答 1

4

您的输入中可能有空行。跳过这些:

for line in info_1:
    if not line.strip(): continue

但您可能想改用该csv模块

import csv

for row in csv.reader(open('file.dat', newlines=''), delimiter='|'):
于 2013-02-25T19:01:12.687 回答