2016-09-17 3 views
0

Ich habe eine Textdatei, die Ganzzahlen im Text enthält. Es gibt eine oder mehrere ganze Zahlen in einer Zeile oder keine. Ich möchte diese ganzen Zahlen mit regulären Ausdrücken finden und die Summe berechnen.Python List Comprehensions mit regulären Ausdrücken für einen Text

Ich habe es geschafft, den Code zu schreiben:

import re 
doc = raw_input("File Name:") 
text = open(doc) 
lst = list() 
total = 0 

for line in text: 
    nums = re.findall("[0-9]+", line) 
    if len(nums) == 0: 
     continue 
    for num in nums: 
     num = int(num) 
     total += num 
print total 

Aber ich möchte auch die Liste Verständnis Version wissen, kann jemand helfen?

+0

BTW ... Sie brauchen nicht 'if len (nums) == 0'. Wenn es keine gibt, wird die "for" -Schleife nichts tun. – zvone

+0

@zvone danke für info –

Antwort

1

Da Sie die Summe der Zahlen berechnen möchten, nachdem Sie sie gefunden haben Es ist besser, einen Generatorausdruck mit re.finditer() innerhalb sum() zu verwenden. Auch wenn die Größe der Datei nicht sehr groß ist, liest man sie lieber sofort als Zeile für Zeile.

import re 
doc = raw_input("File Name:") 
with open(doc) as f: 
    text = f.read() 

total = sum(int(g.group(0)) for g in re.finditer(r'\d+', text)) 
+0

danke, und es gibt auch eine zweizeilige version kann man helfen: 'import re print sum ([__________ ('[0-9] +', _________. Lesen())]) ' –

+0

@ user6561340 Es gibt keine Notwendigkeit, es in zwei Zeilen zu schreiben. Aber wenn du üben willst, versuche es einfach und sieh dir das Ergebnis an. – Kasramvd

+0

Danke für Hilfe :) –

Verwandte Themen