2016-07-08 5 views
0

ich ein paar Sätze von Text in dem folgenden Format haben:, wie der Text in einzelne Listenelemente aufgeteilt

Title: Presenting in a new Forum, Jun-01-2016 # Sentence 1 
Source: xyz Website       # Sentence 2 
Type: Special Presentations     # Sentence 3 
From: 14/May/2016        # Sentence 4 
blah blah blah blah       # Main Paragraph (stretches over 150 words) 

Wie kann ich sie einzeln aufzuschlüsseln nur erhalten:

Title: Presenting in a new Forum, Jun-01-2016 

und

Source: xyz Website 

und

Type: Special Presentations 

etc

Ich habe el2.split() versucht, aber diese spaltet alles in einzelne Worte .. Ich versuche, es in ein list zu bekommen, so dass ich einzeln die Sentences ziehen kann, sowie die Main Paragraph getrennt.

+0

['el2.spliitlines()'] (http://www.tutorialspoint.com/python/string_splitlines.htm) sollte die Zeichenfolge auf Zeilenumbrüche ('/ n') –

+1

teilen Sie wollen also entfernen das nachgestellte '# ...'? – mgilson

+0

Sind die Sätze in einer Datei, alle in einer Zeichenfolge, oder was? – martineau

Antwort

2

Wenn Sie immer gehen Titel, Quelle, Typen zu haben, und aus (die 1 Zeile pro Stück) und dann einen Absatz von beliebiger Anzahl von Zeilen:

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 
0

Wenn das aus einer Textdatei ist, dann können Sie einfach .readlines() aufrufen, die ein Array der Zeilen zurückgibt. Wenn es sich um eine Zeichenfolge handelt, teilen Sie sie auf '\ n'.

0

das erste Wort jedes Satzes Unter der Annahme, endet mit ‚:‘ und die erste Zeile des Absatzes in nicht zu Ende ‚:‘, sollte der folgende Code funktioniert:

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) 
0

Wenn das ein String Sie verwenden mögen:

el2.splitlines() 

, die die Zeichenfolge auf jeder neuen Zeile geteilt wird, und wenn Sie die Zeilenumbrüche (\ n) an die Zeichenfolge hinzugefügt benötigen, können Sie verwenden:

el2.splitlines(5) 

Wenn el2 eine Datei ist, dass Sie es tun wollen werden auf diese Weise:

>>> file = open('el2.txt').read() 
>>> file 
>>> file.split('\n') 

Dadurch wird jede Zeile auf dem Zeilenumbruch erneut aufgeteilt.

Schließlich klingt es wie Sie sie jeweils als separate Variablen zu speichern, werden zu wollen, sobald Sie eine Liste haben (dies wird nicht empfohlen, wenn Sie große Listen haben), aber sie tun könnten,

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

Hier ist die PythonFiddle dafür http://pythonfiddle.com/split-and-save

+0

'el2.splitlines (5)' ist nur ein Umweg zur Angabe von 'el2.splitlines (True)', was unnötig ist, da es die Standardeinstellung ist (um die Zeilenumbrüche beizubehalten). – martineau

+0

@martineau - Danke für diesen Einblick. Ich habe die Tutorial-Seite (http://www.tutorialspoint.com/python/string_splitlines.htm) über Splitlines gelesen und es hat eindeutig einen schlechten Job gemacht, das zu erklären. Die eigentliche Python-Dokumentation (https://docs.python.org/2/library/stdtypes.html#str.splitlines) bietet einen besseren Überblick, wenn jemand interessiert ist. – AdamSC

Verwandte Themen