从Python中的文本文件中获取* list *内容

时间:2016-07-20 18:06:20

标签: python list implicit-conversion

我需要帮助从文件中取回列表,其中每行都存储为列表。 例如,请检查以下lists.txt文件

["1","Andy Allen","Administrator"]
["2","Bob Benny","Moderator"]
["3","Zed Zen","Member"]

我需要访问内容并以下列方式显示

SN : 1
Name : Andy Allen
Position : Administrator

SN : 2
Name : Bob Benny
Position : Moderator

SN : 3
Name : Zed Zen
Position : Member

PS:我知道我可以使用Delimiters保存它并使用split函数访问列表元素......但是当使用特定的分隔符作为文本内容时,似乎会导致函数异常运行..

2 个答案:

答案 0 :(得分:1)

此格式仅使用双引号而非单引号,看起来像JSON (JavaScript object notation)。幸运的是,Python 2.6或更高版本附带的json模块可以解析JSON。因此,请阅读每一行,将其解析为JSON(使用json.loads),然后将其打印出来。尝试这样的事情:

import json
with open("lists.txt", "r") as infp:
    rows = [json.loads(line) for line in infp]
for sn, name, position in rows:
    print("SN : %s\nName : %s\nPosition : %s\n" % (sn, name, position))

驯服CSV

另一种解决方案是以制表符或逗号分隔的值格式导出,并使用Python的csv模块来读取它们。如果(例如)逗号分隔文件中的值包含逗号,请用双引号括起来("):

2,Bob Benny,"Moderator, Graphic Designer"

如果某个值包含双引号字符,请将它们加倍并用双引号括住整个事物。例如,下一行的最后一个元素的值为"Fossils" Editor

5,Chester from Tilwick,"""Fossils"" Editor"

电子表格应用程序(例如Excel,LibreOffice Calc或Gnumeric)将以分隔格式保存时为您执行此转义。因此lists.csv看起来像这样:

1,Andy Allen,Administrator
2,Bob Benny,"Moderator, Graphic Designer"
3,Zed Zen,Member
5,Chester from Tilwick,"""Fossils"" Editor"

可以类似地解析:

import csv
with open("lists.csv", "r", newline="") as infp:
    # use "excel" for comma-separated or "excel-tab" for tab-separated
    reader = csv.reader(infp, "excel")
    rows = list(reader)
for sn, name, position in rows:
    print("SN : %s\nName : %s\nPosition : %s\n" % (sn, name, position))

(这适用于Python 3. Python 2' csv模块略有不同,open应为二进制:open("lists.txt", "rb")。)

答案 1 :(得分:0)

如何使用grep抓取[]中的所有内容?