首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从文本文件中获取*list*内容

使用Python从文本文件中获取*list*内容
EN

Stack Overflow用户
提问于 2016-07-21 02:06:20
回答 2查看 56关注 0票数 0

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

代码语言:javascript
复制
["1","Andy Allen","Administrator"]
["2","Bob Benny","Moderator"]
["3","Zed Zen","Member"]

我需要的内容是可访问的,并以以下方式显示

代码语言:javascript
复制
SN : 1
Name : Andy Allen
Position : Administrator

SN : 2
Name : Bob Benny
Position : Moderator

SN : 3
Name : Zed Zen
Position : Member

PS :我知道我可以用分隔符和访问列表元素来保存它,还有拆分功能……但是,当使用特定的分隔符作为文本内容时,似乎会导致函数运行异常。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-21 02:11:11

这种格式只使用双引号,而不是单引号,看起来像JSON (JavaScript object notation)。幸运的是,Python2.6或更高版本附带的json模块可以解析JSON。因此读取每一行,将其解析为JSON (使用json.loads),然后将其打印出来。尝试如下所示:

代码语言:javascript
复制
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模块读取它们。例如,如果逗号分隔的文件中的值包含逗号,请用双引号(")将其括起来:

代码语言:javascript
复制
2,Bob Benny,"Moderator, Graphic Designer"

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

代码语言:javascript
复制
5,Chester from Tilwick,"""Fossils"" Editor"

电子表格应用程序,如Excel,LibreOffice Calc,或Gnumeric,将在保存为独立格式时为您进行此转义。因此,lists.csv将如下所示:

代码语言:javascript
复制
1,Andy Allen,Administrator
2,Bob Benny,"Moderator, Graphic Designer"
3,Zed Zen,Member
5,Chester from Tilwick,"""Fossils"" Editor"

它可以被类似地解析:

代码语言:javascript
复制
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")。)

票数 1
EN

Stack Overflow用户

发布于 2016-07-21 03:28:19

使用grep抓取

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38487763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档