我想读取包含文件(.txt或.out)中特殊字符的字符串值的多维列表。 然后我必须读取第一行的第一个值并与同一行的第二个值进行比较。
喜欢:
[
["this","why this7656^"]
["@this","whAy @this code"],
["is ", "this@@#@# code is complex"],
["@#@#", "Test@#@#his Test"]
]
我的问题是如何提取这些价值。 必须以此格式读取值 - <"此">
我尝试拆分/加入,但无法获得完整的一个字符串(无论是给出整行还是按字符分割它)
答案 0 :(得分:0)
这是不好的做法 - 使用'eval' - 但这是解决问题的最简单方法。您只有必须保证您将评估的语句是安全且正确的Python代码。试试这个:
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
data = eval(content)
print ['<%s>' % x[0] for x in l]
在检索Python集合之后,我希望为您提取所需的数据项不会有问题。
UPD:另一种方式 - 使用正则表达式,如'[“(。*?)”' - 它将匹配任何以“[”开头的字符串,后面跟不带分隔符的双引号字符。之后我用另一个双引号符号指定了非贪婪模式和闭合表达式。不确定它会是更好的方法,但它会发生。
答案 1 :(得分:0)
您的示例字符串看起来像JSON。
使用Python JSON Module对其进行解码:
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
data = json.loads(content)
答案 2 :(得分:0)
>>> import ast
>>> text = '''[
["this", "why this7656^"],
["@this", "whAy @this code"],
["is ", "this@@#@# code is complex"],
["@#@#", "Test@#@#his Test"]
]'''
>>> ast.literal_eval(text)
[['this', 'why this7656^'], ['@this', 'whAy @this code'], ['is ', 'this@@#@# code is complex'], ['@#@#', 'Test@#@#his Test']]