我有一个包含按以下格式的鸣叫的文本文件
['RT @abcd: Name another swing group who can sell out Bob Field. Thank you.', 'Thanks to amazing supporters like @Bob Community Development, eligible New Yorkers can use NYC #FreeTaxPrep to get… SomeURL']
我想字符串转换为个人微博的列表。
在我看来,分隔符是单引号,后跟一个逗号,后面加一个空格,然后是单引号。
我的代码如下:
opened_file = open('file_name.txt')
read_file = opened_file.read()
split_dataset = read_file.split(" \', \' ")
然而,当我测试的结果列表的长度,我得到一个大小只有一个,这意味着没有分析已经发生。
>>> len(split_dataset)
1
您应该拆分使用此字符串:read_file.split("', '")
(没有前导或尾随空格,没有反斜杠)。
这将不采取前端和后端字符('
,[
和]
)的照顾。虽然可以手动照顾他们,它看起来像列表中写有一个Python模块或功能文件。机会是你可以使用相同的模块直接读取到一个列表。例如,使用yaml
,为您的1行文件,但多线工作的文件太多:
import yaml
with open('file_name.txt') as opened_file:
for line in opened_file.readlines():
split_dataset = yaml.load(line)
print len(split_dataset)
您的数据存储在几乎JSON,除了单引号代替双引号。也许这是最好的“修复”的数据看起来像真正的JSON,然后用json
模块处理:
import json
read_file = read_file.replace('"', '\\"').replace("'", '"')
split_dataset = json.loads(read_file)
该文本文件与“字符串化” Python列表语法编写。 ast.literal_eval
可以将其转换回一个真正的Python列表:
>>> s = '''['RT @abcd: Name another swing group who can sell out Bob Field. Thank you.', 'Thanks to amazing supporters like @Bob Community Development, eligible New Yorkers can use NYC #FreeTaxPrep to get… SomeURL']'''
>>> import ast
>>> ast.literal_eval(s)
['RT @abcd: Name another swing group who can sell out Bob Field. Thank you.', 'Thanks to amazing supporters like @Bob Community Development, eligible New Yorkers can use NYC #FreeTaxPrep to get… SomeURL']
这将读取并转换每一行:
import ast
with open('file_name.txt') as f:
for line in f:
L = ast.literal_eval(line)
# do something with the list