17

我正在尝试解析管道分隔文件并将值传递到列表中,以便稍后我可以从列表中打印选择性值。

该文件如下所示:

name|age|address|phone|||||||||||..etc

它有 100 多列。

4

4 回答 4

40

使用csv 库

首先,注册您的方言:

import csv
csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE)

然后,在文件上使用您的方言:

with open(myfile, "rb") as csvfile:
    for row in csv.DictReader(csvfile, dialect='piper'):
        print row['name']
于 2013-04-11T18:44:57.797 回答
20

|如果您正在解析一个在实际字段值中不包含任何字符的非常简单的文件,您可以使用split

fileHandle = open('file', 'r')

for line in fileHandle:
    fields = line.split('|')

    print(fields[0]) # prints the first fields value
    print(fields[1]) # prints the second fields value

fileHandle.close()

编辑:解析表格数据的一种更强大的方法是使用下面提到csv的库。

于 2013-04-11T18:40:46.720 回答
19
import pandas as pd

pd.read_csv(filename,sep="|")

这会将文件存储在数据框中。对于每一列,您可以应用条件来选择要打印的所需值。执行时间很短。我尝试了 111047 行。

于 2017-02-01T14:57:02.967 回答
0

在 2022 年,使用 python 3.8 或更高版本,您可以简单地执行以下操作:

     with open(file_path, "r") as csvfile:
            reader = csv.reader(csvfile, delimiter='|')
            for row in reader:
              print(row)
于 2022-03-01T13:27:13.827 回答