在python中解析管道分隔文件

在python中解析管道分隔文件,python,python-3.x,parsing,delimiter-separated-values,Python,Python 3.x,Parsing,Delimiter Separated Values,我试图解析一个以管道分隔的文件,并将值传递到一个列表中,以便稍后可以打印列表中的选择性值 该文件看起来像: name|age|address|phone|||||||||||..etc 它有100多列。如果您正在解析一个在实际字段值中不包含任何字符的非常简单的文件,您可以使用: 编辑:解析表格数据的更可靠方法是使用csv库作为。使用 首先,注册您的方言: import csv csv.register_dialect('piper', delimiter='|', quoting=csv.QU

我试图解析一个以管道分隔的文件,并将值传递到一个列表中,以便稍后可以打印列表中的选择性值

该文件看起来像:

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

它有100多列。

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

编辑:解析表格数据的更可靠方法是使用
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']

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

一个好的问题将包含一个示例代码和您在尝试运行代码时遇到的任何错误。@jwodder:无论是什么原因,它似乎都起了作用:这个问题得到了两个有效答案,而另一个问题没有得到任何答案,并且被自动删除。投票重新开始,尽管比分很糟糕。我很高兴第二次尝试结束这个问题失败了!我使用了splitstring方法,但它只打印第一个拆分列(名称)中的“n”。如果您将我的代码复制并粘贴到文本文件中并运行它,您将看到它是有效的。也许您可以共享一些代码,这样我们就可以看到出了什么问题?如果将open(“abc.txt”,“r”)作为infle:data=infle.read()fields=data.split(“|”)print(data[0]),如果其中一个字段中有管道,则此方法将不起作用。使用实际的CSV库会管理得更好。我很感谢提出的解决方案,但我遇到了一些小问题。通过在open()语句中添加encoding='utf-8',解决了错误“迭代器应该返回字符串,而不是字节(是否以文本模式打开文件?)。第二个问题是使用mode='r'而不是解决方案中给出的mode='rb'解决的。
with open(myfile, "rb") as csvfile:
    for row in csv.DictReader(csvfile, dialect='piper'):
        print row['name']
import pandas as pd

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