我需要帮助从文件中提取列表,其中每一行都存储为一个列表。例如,检查以下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 : MemberPS :我知道我可以用分隔符和访问列表元素来保存它,还有拆分功能……但是,当使用特定的分隔符作为文本内容时,似乎会导致函数运行异常。
发布于 2016-07-21 02:11:11
这种格式只使用双引号,而不是单引号,看起来像JSON (JavaScript object notation)。幸运的是,Python2.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))(这是针对Python3的。Python2的csv模块略有不同,因为open应该是二进制的:open("lists.txt", "rb")。)
发布于 2016-07-21 03:28:19
使用grep抓取
https://stackoverflow.com/questions/38487763
复制相似问题