2016-11-27 5 views
-1

Ich versuche, ein Problem zu lösen, wo ich String und Int getrennt klassifizieren. Meine Frage ist, wenn Benutzer etwas eingeben, dann mein Programm alle Wörter (str) und int getrennt finden.Finding int und string getrennt in Mix-Eingang

Wie Benutzereingabe „wert1234“ dann sollte es drucken „string ist wert“ und int sind 1234"

ich mit vielen Möglichkeiten ausprobiert, aber ich bin vor Problem, das ich mit versucht:

in=input() 
for i in in: 
    if type(i)==type(str): 
     print(i) 

aber seine nicht funktioniert i auch mit regex versucht:

import re 
df=input() 
regex = r"([a-zA-Z]+) \d+" 
matches = re.findall(regex, df) 
for match in matches: 
    print(match) 

stri = r"([0-9]+) \d+" 
search=re.findall(ret,df) 
for j in search: 
    print(j) 

so ich habe zwei Fragen:

zuerst bitte sagen, wie ich string und int anders klassifizieren kann, wenn die eingabe mix ist?

zweite Frage ist, wie Suche nur Int mit Regex? wie Benutzereingabe "wer 123" so regex suche nur 123 und drucke.

+0

Versuchen Sie 'matches = re.findall (r" ([a-zA-Z] +) (\ d +) ", df) ' –

+0

Diese Frage ist sowohl als Python 2 als auch als Python 3 markiert. Welche verwenden Sie eigentlich? 'input' verhält sich in 2 und 3 nicht gleich. – DeepSpace

+0

Mögliches Duplikat von [Python: Zahlen aus einer Zeichenkette extrahieren] (http://stackoverflow.com/questions/4289331/python-extract-numbers-froma-a- Schnur) –

Antwort

0

Extract ganzen Zahlen und Wörter wie folgt aus:

import re 

my_string = 'wert1234word0test12' 

integers = re.findall('\d+', my_string) 
words = re.findall('[a-zA-Z]+', my_string) 

Ausgang:

>>> integers 
['1234', '0', '12'] 
>>> words 
['wert', 'word', 'test'] 

Möglicherweise möchten Sie Artikel konvertieren in ganzen Zahlen sein, vom Typ int, Sie können das erreichen, indem Sie Listenverständnis:

>>> [int(i) for i in integers] 
[1234, 0, 12]