我在python中给出了这种格式的文本文件(数值可以是任何小数值):
'Document1',[
'words_list1',[
'word1',[
'value1', 4,
'value2', 50],
'word2',[
'value1', 2,
'value2', 30],
...
'wordx',[
'value1', 1,
'value2', 9]]],
'Document2',[
'words_list2',[
'word1',[
'value1', 1,
'value2', 4],
'word2',[
'value1', 6,
'value2', 99],
...
'wordx',[
'value1', 22,
'value2', 92]]],
...
'Documentx',[
'words_listx',[
'word1',[
'value1', 1,
'value2', 4],
'word2',[
'value1', 6,
'value2', 99],
...
'wordx',[
'value1', 22,
'value2', 92]]]
我想通过文档,单词和值将其解析为python数组(即我希望能够通过以下方式访问每个值:array_name [document#] [word#] [value#]。
任何有关我如何处理此事的帮助都会非常有用 - 我是python的新手,并且不确定是否有任何库可以帮助我这样做。
由于
答案 0 :(得分:1)
图书馆不需要eval
:
doc = """'Document1',[
'words_list1',[
'word1',[
'value1', 4,
'value2', 50],
'word2',[
'value1', 2,
'value2', 30],
'wordx',[
'value1', 1,
'value2', 9]]]"""
>>> d = eval('[{}]'.format(doc))
>>> d
['Document1', ['words_list1', ['word1', ['value1', 4, 'value2', 50], 'word2', ['value1', 2, 'value2', 30], 'wordx', ['value1', 1, 'value2', 9]]]]
并转换为dict,由@JoranBeasley提供
def to_dict(l):
if not isinstance(l[1], list):
return dict(zip(*[iter(l)]*2))
rv = zip(*[iter(l)]*2)
return {k: to_dict(v) for k, v in rv}
>>> to_dict(d)
{'Document1': {'words_list1': {'word1': {'value2': 50, 'value1': 4}, 'wordx': {'value2': 9, 'value1': 1}, 'word2': {'value2': 30, 'value1': 2}}}}
答案 1 :(得分:1)
您可以将文件加载到python中,如下所示:
text = open('txt_filename').read()
data = eval('[' + text + ']')
然后你可以统计数据以获得你想要的东西
答案 2 :(得分:0)
word_dic = eval(open("word.txt").read())
答案 3 :(得分:0)
您可以使用Python中的dict
来完成此操作。 这是简单的迭代版本:
txt = [ \
'Document1',[
'words_list1',[
'word1',[
'value1', 4,
'value2', 50],
'word2',[
'value1', 2,
'value2', 30],
'wordx',[
'value1', 1,
'value2', 9]]],
'Document2',[
'words_list2',[
'word1',[
'value1', 1,
'value2', 4],
'word2',[
'value1', 6,
'value2', 99],
'wordx',[
'value1', 22,
'value2', 92]]],
'Documentx',[
'words_listx',[
'word1',[
'value1', 1,
'value2', 4],
'word2',[
'value1', 6,
'value2', 99],
'wordx',[
'value1', 22,
'value2', 92]]]]
d = {}
for i in xrange(0,len(txt),2):
dls = txt[i+1]
d2 = {}
for j in xrange(0,len(dls),2):
wds = dls[j+1]
d3 = {}
for k in xrange(0,len(wds),2):
vls = wds[k+1]
d4 = {}
for m in xrange(0,len(vls),2):
d4[vls[m]] = vls[m+1]
d3[wds[k]] = d4
d2[dls[j]] = d3
d[txt[i]] = d2
<强>结果:强>
>>> d['Documentx']
{'words_listx': {'word1': {'value2': 4, 'value1': 1}, 'wordx': {'value2': 92, 'value1': 22}, 'word2': {'value2': 99, 'value1': 6}}}
>>> d['Documentx']['words_listx']
{'word1': {'value2': 4, 'value1': 1}, 'wordx': {'value2': 92, 'value1': 22}, 'word2': {'value2': 99, 'value1': 6}}
>>> d['Documentx']['words_listx']['word1']
{'value2': 4, 'value1': 1}
>>> d['Documentx']['words_listx']['word1']['value1']
1