如何在python中逐行读取文件

时间:2017-11-05 23:30:49

标签: python file

我试图在python中阅读下面的文本文件,我很难在输出中获得关键值,但它没有按预期工作:

的test.txt

productId1 ProdName1,ProdPrice1,ProdDescription1,ProdDate1
productId2 ProdName2,ProdPrice2,ProdDescription2,ProdDate2
productId3 ProdName3,ProdPrice3,ProdDescription3,ProdDate3
productId4 ProdName4,ProdPrice4,ProdDescription4,ProdDate4

myPython.py

import sys
with open('test.txt') as f
  lines = list(line.split(' ',1) for line in f)
  for k,v in lines.items();
     print("Key : {0}, Value: {1}".format(k,v))

我尝试解析文本文件并尝试分别打印键和值。看起来我在这里做错了什么。需要一些帮助来解决这个问题吗?

谢谢!

6 个答案:

答案 0 :(得分:2)

你不必要地存储一个列表。

循环,拆分和打印

with open('test.txt') as f:
    for line in f:
        k, v = line.rstrip().split(' ',1) 
        print("Key : {0}, Value: {1}".format(k,v))

答案 1 :(得分:0)

这应该有效,列表理解:

with open('test.txt') as f:
    lines = [line.split(' ',1) for line in f]
    for k, v in lines:
        print("Key: {0}, Value: {1}".format(k, v))

答案 2 :(得分:0)

你可以使用dict comp制作一个直接击打蝙蝠的字典,然后根据需要迭代列表进行打印。你所做的是创建一个没有items()方法的列表。

with open('notepad.txt') as f:
    d = {line.split(' ')[0]:line.split(' ')[1] for line in f}
    for k,v in d.items():
        print("Key : {0}, Value: {1}".format(k,v))

答案 3 :(得分:0)

lines是一个列表清单,所以完成这项工作的好方法是:

import sys
with open('test.txt') as f:
  lines = list(line.split(' ',1) for line in f)
for k,v in lines:
   print("Key : {0}, Value: {1}".format(k,v))

答案 4 :(得分:0)

也许我正在阅读你的描述,但我看到一个键,一个空格和一个逗号限制其他字段的名称。如果我将其解释为那些逗号有限的项目的数据,那么我会得出结论,你想要一本字典词典。这会产生如下代码:

data_keys = 'ProdName', 'ProdPrice', 'ProdDescription', 'ProdDate'
with open('test.txt') as f:
  for line in f:
    id, values = l.strip().split()  # automatically on white space
    keyed_values = zip(data_keys, values.split(','))
    print(dict([('key', id)] + keyed_values))

答案 5 :(得分:-1)

您可以使用f.readlines()函数返回文件f中的行列表。我更改了代码以包含第3行中的f.lines。

import sys
with open('test.txt') as f:
  lines = list(line.split(' ',1) for line in f.readlines())
  for k,v in lines.items();
     print("Key : {0}, Value: {1}".format(k,v))