【问题标题】:reading data from file and printing specific colums per line从文件中读取数据并每行打印特定列
【发布时间】:2015-07-14 10:04:19
【问题描述】:

我有一个 CSV 文件,其中包含以下格式的数据,没有标题:

12345;TO-345;Something;可能也有用;etc;44444:33333;and_so_on;

1435;TO-345;还有一些东西;绝对有用;等等;44444:33333;完成;

文件还有 1000 行左右。

我想用 Python 完成的是我想逐行读取文件并能够每行调用特定的列。例如,当特定列的 for 循环从第 0 行开始时,它可以打印出第 0 列中的数据,然后继续对下一行执行相同的操作,一直到文件末尾(最后一行)。我找到了类似场景的好例子,但未能完全理解我想要做的事情。

【问题讨论】:

  • 你能添加一个你想要达到的输出的例子吗?
  • print row[0], print row[1]...

标签: python list file python-3.x


【解决方案1】:

要从文件中提取信息,您可以使用csv 模块。

>>> import csv
>>> with open("data.txt", "r") as f:
...   reader = csv.reader(f, delimiter=";")
...   for row in reader:
...     print(row)
... 
['12345', 'TO-345', 'Something', 'Might be useful as well', 'etc', '44444:33333', 'and_so_on', '']
['1435', 'TO-345', 'Something as well', 'Definately useful', 'etc', '44444:33333', 'done', '']

(我拿了你的样本,放到data.txt

在内部循环中,您可以选择任何您想要的列,行只是字符串列表。要获得第三列,您需要打印 print(row[2]) 而不是整行。

或者,如果您想多次循环,您也可以先将所有行加载到列表中:

import csv

def load_data(filename):
    with open(filename, "r") as f:
        reader = csv.reader(f, delimiter=";")
        return list(reader)

data = load_data("data.txt")
for row in data:
    print(row[2])

【讨论】:

    【解决方案2】:

    你可以从一个简单的python代码开始,比如

    file = open('filename', 'r');
    for line in file:
        row = line.split(';')
        print(row[1])
    file.close()
    

    这将从文件的每一行打印第二列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      相关资源
      最近更新 更多