我有一个文本文件,其中包含以下格式的推文
['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
答案 0 :(得分:3)
您应该使用以下字符串进行拆分:read_file.split("', '")
(没有前导或尾随空格,没有反斜杠)。
这不会处理前导和尾随字符('
,[
和]
)。虽然您可以手动处理它们,但看起来该列表是使用python模块或函数写入文件的。您可以使用同一模块直接读入列表。例如,对您的1行文件使用yaml
,但也可用于多行文件:
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)
答案 1 :(得分:0)
您的数据几乎以JSON存储,除了使用单引号而不是双引号。也许最好将数据“修复”为真实的JSON,然后使用json
模块进行处理:
import json
read_file = read_file.replace('"', '\\"').replace("'", '"')
split_dataset = json.loads(read_file)
答案 2 :(得分:0)
该文本文件是使用“字符串化” 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