繁体   English   中英

解析 Python 中的竖线分隔文件

[英]Parsing a pipe-delimited file in Python

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

该文件如下所示:

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']

如果您要解析一个非常简单的文件,其中不包含任何| 实际字段值中的字符,可以使用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库, 如下所述

import pandas as pd

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

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

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

import csv

with open(file_path, "r") as csvfile:
    reader = csv.reader(csvfile, delimiter='|')
    for row in reader:
        print(row[0], row[1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM