正在从 Python 中的文本文件中获取 *list* 内容
Fetching *list* contents from a text file in Python
我需要帮助从一个文件中取回列表,其中每一行都存储为一个列表。
例如,检查以下 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 :我知道我可以用分隔符保存它并使用拆分功能访问列表元素......但是似乎当使用特定的分隔符作为文本内容时会导致函数运行异常。 .
这种格式,只使用双引号而不是单引号,看起来像 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")
。)
如何使用 grep 抓取 [ ] 中的所有内容?
我需要帮助从一个文件中取回列表,其中每一行都存储为一个列表。 例如,检查以下 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 :我知道我可以用分隔符保存它并使用拆分功能访问列表元素......但是似乎当使用特定的分隔符作为文本内容时会导致函数运行异常。 .
这种格式,只使用双引号而不是单引号,看起来像 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")
。)
如何使用 grep 抓取 [ ] 中的所有内容?