首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将较大的文本文件拆分成句子

将较大的文本文件拆分成句子
EN

Stack Overflow用户
提问于 2014-01-21 22:42:05
回答 1查看 98关注 0票数 1

我有一个文本文件,其中包含以下行,我想将它们拆分为每个句子的列表,一个句子是1-5,另一个是1-8,依此类推,每个句子之间有空格。例如,一个句子列表应该是'Den','allmänna','pensionen','är','av',即1-5

代码语言:javascript
复制
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。

代码语言:javascript
复制
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  _   _   
EN

回答 1

Stack Overflow用户

发布于 2014-01-21 22:48:34

使用itertools.groupby并使用str.isspace对项目进行分组

代码语言:javascript
复制
from itertools import groupby

with open('abc1') as f:
    for k, g in groupby(f, str.isspace):
        if not k:
            sentence = [x.split(None, 2)[1] for x in g]
            print sentence

输出:

代码语言:javascript
复制
['Den', 'allm\xc3\xa4nna', 'pensionen', '\xc3\xa4r', 'av']
['Folkpensionen', 'f\xc3\xa5r', 'man', 'oberoende', 'av', 'tidigare', 'arbetsinkomst', '.']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21261218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档