python - 在python中解析文件

标签 python file parsing

我正在尝试解析 2 个竖线/逗号分隔的文件,如果文件中的特定字段匹配,则在第 3 个文件中创建新条目。

代码如下:

#! /usr/bin/python

fo = open("c-1.txt" , "r" )
for line in fo:
    #print line
    fields = line.split('|')
    src  = fields[0]

    f1 = open("Airport.txt", 'r')
    f2 = open("b.txt", "a")
    #with open('c.csv', 'r') as f1:
    #    line1 = f1.read()
    for line1 in f1:
        reader = line1.split(',')
        hi = False
        target = reader[0]
        if target == src and fields[1] == 'ZHT':
            print target
            hi = True
            f2.write(fields[0])
            f2.write("|")
            f2.write(fields[1])
            f2.write("|")
            f2.write(fields[2])
            f2.write("|")
            f2.write(fields[3])
            f2.write("|")
            f2.write(fields[4])
            f2.write("|")
            f2.write(fields[5])
            f2.write("|")
            f2.write(reader[2])
    if hi == False:
         f2.write(line)
    f2.close()
    f1.close()
fo.close()

匹配字段在新文件中打印了 2 次。可能是什么原因?

最佳答案

问题似乎是您在循环的每次迭代中将 hi 重置为 False。可以说第二行匹配,但第三行不匹配。您在第二行将 hi 设置为 True,但在第三行再次设置为 False,然后打印原始 line.

像这样尝试:

hi = False
for line1 in f1:
    reader = line1.split(',')
    target = reader[0]
    if target == src and fields[1] == 'ZHT':
        hi = True
        f2.write(stuff)
if hi == False:
     f2.write(line)

或者,假设只有一行会匹配,您可以使用 for/else :

for line1 in f1:
    reader = line1.split(',')
    target = reader[0]
    if target == src and fields[1] == 'ZHT':
        f2.write(stuff)
        break
else:
     f2.write(line)

另请注意,您可能会用这个替换那一系列的 f2.write 语句,用 | 连接几个部分:

f2.write('|'.join(fields[0:6] + [reader[2]])

关于python - 在python中解析文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570538/

相关文章:

c# - 如何调试不工作的 JSON 解析?

python - 新手 Python 关于参数为 : "%%s"? 的字符串的问题

Python:使用filter()生成素数列表的代码中生成器和过滤器如何工作

C 忽略一些行,然后打印其余行

linux - 我们如何在linux中创建 'special'文件,例如/dev/random?

c++ - 从文本文件中读取变量

python - 调用 ElementTree.parse 时为 "XML or text declaration not at start of entity: line 2, column 0"

python - 在 PlotWidget GUI 中运行实时 pyqtgraph

c - 在文件操作中使用 strcat 时如何修复段错误(核心转储)

javascript - CSS 到 JSON 解析器或转换器