Python 如何将文本拆分为单个列表项

Python 如何将文本拆分为单个列表项,python,Python,我有几句文字,格式如下: 标题:在新论坛上发表,2016年6月1日#第1句 资料来源:xyz网站#第2句 类型:特别报告#第3句 起始日期:2016年5月14日#第4句 废话废话#主要段落(超过150字) 我如何将它们单独拆分以获得: 标题:在新论坛上演讲,2016年6月1日 及 来源:xyz网站 及 类型:特殊演示文稿 等 我尝试过el2.split(),但这会将所有内容拆分为单个单词。。我正试图将它放入列表中,这样我就可以分别画出句子,以及主要段落。如果这是一个文本文件,您可以调用.

我有几句文字,格式如下:

标题:在新论坛上发表,2016年6月1日#第1句
资料来源:xyz网站#第2句
类型:特别报告#第3句
起始日期:2016年5月14日#第4句
废话废话#主要段落(超过150字)
我如何将它们单独拆分以获得:

标题:在新论坛上演讲,2016年6月1日

来源:xyz网站

类型:特殊演示文稿


我尝试过
el2.split()
,但这会将所有内容拆分为单个单词。。我正试图将它放入
列表中,这样我就可以分别画出
句子,以及
主要段落

如果这是一个文本文件,您可以调用.readlines(),它返回一个行数组。若它是字符串,则在“\n”上拆分。

若它来自文本文件,则只需调用.readlines(),它将返回一个行数组。如果是字符串,则在“\n”上拆分。

假设每个句子的第一个单词以“:”结尾,并且段落的第一行不以“:”结尾,则以下代码应该可以工作:

string = """\
Title: Presenting in a new Forum, Jun-01-2016  
Source: xyz Website                            
Type: Special Presentations                    
From: 14/May/2016                              
blah blah blah blah                            # Main Paragraph (stretches over 150 words)
"""

paragraph = ''
# when we start the paragraph, there are no more sentences
paragraph_start = False

for line in string.splitlines():
    if line.split()[0].endswith(':') and not paragraph_start:
        print('a Sentence:', line)
    else:
        paragraph_start = True
        paragraph += line + '\n'


print('the paragraph:', paragraph)

假设每个句子的第一个单词以“:”结尾,而段落的第一行不以“:”结尾,那么以下代码应该可以工作:

string = """\
Title: Presenting in a new Forum, Jun-01-2016  
Source: xyz Website                            
Type: Special Presentations                    
From: 14/May/2016                              
blah blah blah blah                            # Main Paragraph (stretches over 150 words)
"""

paragraph = ''
# when we start the paragraph, there are no more sentences
paragraph_start = False

for line in string.splitlines():
    if line.split()[0].endswith(':') and not paragraph_start:
        print('a Sentence:', line)
    else:
        paragraph_start = True
        paragraph += line + '\n'


print('the paragraph:', paragraph)

如果您总是有标题、来源、类型和发件人(每行1行),然后是一段任意行数的段落:

splitted_file = string.splitlines()

title = splitted_file[1]
source = splitted_file[2]
type = splitted_file[3]
_from = splitted_file[4]  # can't use 'from' as a variable name
paragraph = '\n'.join(splitted_file[5:])

print(title)
>> Title: Presenting in a new Forum, Jun-01-2016

print(source)
>> Source: xyz Website

print(type)
>> Type: Special Presentations

print(_from)
>> From: 14/May/2016

print(paragraph)
>> blah blah blah blah

如果您总是有标题、来源、类型和发件人(每行1行),然后是一段任意行数的段落:

splitted_file = string.splitlines()

title = splitted_file[1]
source = splitted_file[2]
type = splitted_file[3]
_from = splitted_file[4]  # can't use 'from' as a variable name
paragraph = '\n'.join(splitted_file[5:])

print(title)
>> Title: Presenting in a new Forum, Jun-01-2016

print(source)
>> Source: xyz Website

print(type)
>> Type: Special Presentations

print(_from)
>> From: 14/May/2016

print(paragraph)
>> blah blah blah blah

如果这是您要使用的字符串:

el2.splitlines()
这将拆分每一新行上的字符串,如果需要将换行符(\n)添加到字符串中,则可以使用:

el2.splitlines(5)
如果el2是一个文件,您将希望这样做:

>>> file = open('el2.txt').read()
>>> file
>>> file.split('\n')
这将再次拆分换行符上的每一行

最后,听起来您可能希望在拥有一个列表后将它们分别存储为单独的变量(在拥有大型列表时不建议这样做),但您可以这样做

a = el2.split()
title = a[0]
source = a[1]

以下是pythonfidle,如果您想使用该字符串,请参见:

el2.splitlines()
这将拆分每一新行上的字符串,如果需要将换行符(\n)添加到字符串中,则可以使用:

el2.splitlines(5)
如果el2是一个文件,您将希望这样做:

>>> file = open('el2.txt').read()
>>> file
>>> file.split('\n')
这将再次拆分换行符上的每一行

最后,听起来您可能希望在拥有一个列表后将它们分别存储为单独的变量(在拥有大型列表时不建议这样做),但您可以这样做

a = el2.split()
title = a[0]
source = a[1]

这是一个pythonfidle,它应该在换行符(
/n
)上拆分字符串,所以您想删除尾随的
#…
?这些句子是在一个文件中,还是在一个字符串中?应该在换行符(
/n
)上拆分字符串,以便删除尾随的
#…
?是文件中的句子,全部在一个字符串中,还是什么?
el2。拆分行(5)
只是指定
el2的一种迂回方式。拆分行(True)
,这是不必要的,因为它是默认设置(保留换行符)@martineau-谢谢你的洞察力。我阅读了关于分割线的教程要点页(),它显然没有很好地解释这一点。如果有人感兴趣,实际的Python文档()可以提供更好的概述。
el2.splitlines(5)
只是一种迂回的方式来指定
el2.splitlines(True)
,这是不必要的,因为它是默认设置(保留新行)。@martineau-感谢您的见解。我阅读了关于分割线的教程要点页(),它显然没有很好地解释这一点。如果有人感兴趣的话,实际的Python文档()提供了一个更好的概述。