从文件中读取多维字符串数组

时间:2013-04-04 10:55:30

标签: python arrays file

我想读取包含文件(.txt或.out)中特殊字符的字符串值的多维列表。 然后我必须读取第一行的第一个值并与同一行的第二个值进行比较。

喜欢:

[
        ["this","why this7656^"]
        ["@this","whAy @this code"],
        ["is ", "this@@#@# code is complex"],
        ["@#@#", "Test@#@#his Test"]
    ]

我的问题是如何提取这些价值。 必须以此格式读取值 - <"此">

我尝试拆分/加入,但无法获得完整的一个字符串(无论是给出整行还是按字符分割它)

3 个答案:

答案 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']]