如何使用正则表达式删除python中的逗号,括号?

时间:2013-02-05 14:15:06

标签: python regex

这些是我的文本文件的内容(例如:abc.doc):

{'data': [{'name': 'abc'},{'name': 'xyz'}]}

在python中打开文件后;如何删除所有括号,引号和逗号。 最终输出应为:

data:
name:abc
name:xyz             

2 个答案:

答案 0 :(得分:4)

使用ast.literal_eval()将其转换为python结构,然后打印值:

with open(r'd:\output1.doc', 'r') as inputfile:
    inputstring = inputfile.read()

data = ast.literal_eval(inputstring)
for key, sublist in data.items():
    print '{}:'.format(key)
    for subdict in sublist:
        for key, value in subdict.items():
            print('{}:{}'.format(key, value))

对于您的示例,结果为:

>>> inputstring = "{'data': [{'name': 'abc'},{'name': 'xyz'}]}"
>>> import ast
>>> data = ast.literal_eval(inputstring)
>>> for key, sublist in data.items():
...     print '{}:'.format(key)
...     for subdict in sublist:
...         for key, value in subdict.items():
...             print '{}:{}'.format(key, value)
... 
data:
name:abc
name:xyz

然而:如果你从Facebook API获得这个,那么你就错误地转录了格式。 Facebook API为您提供JSON数据,使用双引号(")代替

{"data": [{"name": "abc"},{"name": "xyz"}]}

在这种情况下,您应该使用Python附带的json library

import json

data = json.loads(inputstring)
# process the same way as above.

如果您有文件名,可以让图书馆直接从文件中读取:

data = json.load(filename)  # note, no `s` after `load`.

答案 1 :(得分:0)

我觉得你有json,可以使用pyjson轻松解析:

import json
obj=json.loads(u'''{'data': [{'name': 'abc'},{'name': 'xyz'}]}''')
鲍勃现在是你的叔叔,不是吗?