2016-05-11 14 views
-1

Warum extrahiert mein Code einzelne Ziffern in einer Zahl anstelle der Zahl (d. H. "300" wird als 3 extrahiert, dann 0, dann noch eine 0)?Python individuelle Ziffer Extraktion Regex Problem

import re 
open_file = open("regex_sum_42.txt") 
read_file = open_file.read() 
for line in read_file: 
    line = line.rstrip() 
    num_list = re.findall(".*([0-9])+",line) 
    if len(num_list)>0: 
     print num_list 
+0

Es gibt drei Probleme mit Ihrem Code: 1) Die '+' muss _inside_ der Gruppe gehen, wie so: '([0-9] +) ', sonst erfasst die Gruppe nur eine Ziffer. 2) Das '. *' Vor der Capture-Gruppe wird alle Ziffern außer der letzten aufnehmen. Sie müssen dies nicht gierig machen: '. *? ([0-9] +)'. 3) Sie durchlaufen den Text Zeichen für Zeichen, nicht Zeile für Zeile. –

+0

danke es hat funktioniert! – Veracity

+0

Das war mein letzter Code: import re full_num_list = [] open_file = open ("regex_sum_245272.txt") READ_FILE = open_file.read() Drucksumme (Karte (int, re.findall ("([0- 9] +) ", read_file))) – Veracity

Antwort

0

Sie können einfach tun:

re.findall(r"\d+", line) 
+0

Nicht nur. Das ist nicht genug. –

+0

@ WiktorStribiżew ok jetzt? – heemayl

+0

Jetzt macht es die Frage ein Betrogener :) –