【发布时间】:2014-02-11 05:30:20
【问题描述】:
我有一个包含以下行的文本文件,我想将它们拆分为每个句子的列表,一个句子是 1-5,另一个是 1-8,依此类推,每个句子之间都有空格。比如一个句子列表应该是['Den', 'allmänna','pensionen', 'är', 'av'],即1-5
from collections import defaultdict
out = defaultdict(list) # Initialize dictionary for output
key = 0 # Initialize key
for idx, word, _ in container: # Unpack sublists
if int(idx) == 1: # Check if we are at start of new sentence
key += 1 # Increment key for new sentence
out[key].append(word) # Add word to list
How to slice numbered lists into sublists
代码运行良好,但是当我尝试直接从测试文件将其应用到拆分行时,我得到 ValueError 有太多的值需要解压。该文件共包含 87 行。我想使用上面的代码,但不确定如何解决 ValueError。
1 Den DT DT UTR|SIN|DEF 3 DT _ _ _ _ P108_1:1
2 allmänna JJ JJ POS|UTR/NEU|SIN|DEF|NOM 3 AT _ _ _ _ P108_1:2
3 pensionen NN NN UTR|SIN|DEF|NOM 4 SS _ _ _ _ P108_1:3
4 är VB VB PRS|AKT 0 ROOT _ _ _ _ P108_1:4
5 av PP PP 4 SP _ _
1 Folkpensionen NN NN UTR|SIN|DEF|NOM 2 OO _ _ _ _ P108_2:1
2 får VB VB PRS|AKT 0 ROOT _ _ _ _ P108_2:2
3 man PN PN UTR|SIN|IND|SUB 2 SS _ _ _ _ P108_2:3
4 oberoende PC PC PRS|UTR/NEU|SIN/PLU|IND/DEF|NOM 2 AA _ _ _ _ P108_2:4
5 av PP PP 4 HD _ _
6 tidigare JJ JJ KOM|UTR/NEU|SIN/PLU|IND/DEF|NOM 7 DT _ _ _ _ P108_2:6
7 arbetsinkomst NN NN UTR|SIN|IND|NOM 4 PA _ _ _ _ P108_2:7
8 . MAD MAD 2 IP _ _
【问题讨论】:
-
您在哪一行遇到 ValueError?这通常意味着您在右侧拥有的值比您在左侧提供的变量具有更多的值。例如:
a, b = (1, 2, 3)会抛出这个错误。检查您的输入以查看您遇到问题的线路。
标签: python regex file dictionary split