我需要帮助从文件中取回列表,其中每行都存储为列表。 例如,请检查以下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函数访问列表元素......但是当使用特定的分隔符作为文本内容时,似乎会导致函数异常运行..
答案 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))
另一种解决方案是以制表符或逗号分隔的值格式导出,并使用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抓取[]中的所有内容?