2012-10-29 121 views
-2

Possible Duplicate:
Reading a File into a Dictionary And Keeping Count从文件创建字典

我想创建带有两个值的字典:第一个值是文本:

<NEW ARTICLE> 
Take a look at 
what I found. 
<NEW ARTICLE> 
It looks like something 
dark and shiny. 
<NEW ARTICLE> 
But how can something be dark 
and shiny at the same time? 
<NEW ARTICLE> 
I have no idea. 

,第二个值是多少次的计数使用词“ARTICLE>”。

我尝试了不同的方法,一个方法我收到此错误:

我收到的erorr是这样的:

(key, val) = line.split() 
ValueError: need more than 1 value to unpack 

我已经尝试了几种不同的方法,但都无济于事,一个方法我试图说,它提供了太多的值来解压缩..

我希望能够搜索字典中的关键字,并找到适当的计数。

使用Python 3

+0

你问了同样的问题[h ERE](http://stackoverflow.com/questions/13115214/reading-a-file-into-a-dictionary-and-keeping-count)。通常不是一个好主意 – inspectorG4dget

回答

1

这应该这样做:

>>> with open("data1.txt") as f: 
...  lines=f.read() 
...  spl=lines.split("<NEW ARTICLE>")[1:] 
...  dic=dict((i,x.strip()) for i,x in enumerate(spl)) 
...  print dic 
... 
{0: 'Take a look at \nwhat I found.', 
1: 'It looks like something\ndark and shiny.', 
2: 'But how can something be dark\nand shiny at the same time?', 
3: 'I have no idea.'} 
+0

嗯,当我打印时,我一直收到一个空字典,我正在使用Python 3. – Goose

+0

@Goose刚刚在python 3.x上测试了它,它工作正常。 –

+0

它可以工作,但是对于新手来说,这个概念有点棘手,可以解释一下“dic = dict((i,x.strip())for i,x in enumerate(spl))”完全在你的答案?然后我可以选择它是正确的。 – Goose

0

确保你没有地方一个空行:

if newdoc == True and line != "ARTICLE>" and line: 
    (key, val) = line.split() 

(空行会分裂作为[],它不能被解析为具有两个元素的元组......)

+1

还有一个问题:'line!=“ARTICLE>”'将始终为真。 –

+0

但是如果'line ==“”',条件将不会被满足。 –

+0

确实如此,但是他的所有代码行都与“ARTICLE>”完全一样,所以代码肯定无法使用。也许不是line.endswith(“ARTICLE>”)...... –