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

2024-03-28 23:45:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助从一个文件中获取列表,其中每一行都存储为一个列表。 例如,检查以下内容列表.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

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


Tags: 文件name内容列表positionmemberbobandy
2条回答

这种格式只使用双引号,不使用单引号,看起来像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")。)

使用grep获取[]中的所有内容如何?你知道吗

相关问题 更多 >