Ich habe einen String "42 0"
(zum Beispiel) und brauche ein Array der beiden Ganzzahlen. Kann ich einen .split
auf einem Feld ausführen?
6 Antworten sind bei weitem nicht genug für eine Frage, die OP leicht selbst hätte beantworten können, indem sie im Interpreter getestet wurden:
>>> "42 0".split() # or .split(" ")
['42', '0']
A: ja.
Es wurde jedoch nicht ausdrücklich darauf hingewiesen, dass die split
-Methode standardmäßig auf Leerzeichen (Leerzeichen, Tabulator, Wagenrücklaufund _ Newline aufgeteilt wird, wenn Sie kein Argument angeben dazu.
>>> " \r 42\n\r \t\n \r0\n\r\n".split()
['42', '0']
Die Verwendung von map
sieht in der Regel sauberer aus als die Verwendung von Listenverständnissen, wenn Sie die Elemente der Iterablen in integrierte Elemente wie int
, float
, str
usw. konvertieren möchten.
>>> map(int, "42 0".split())
[42, 0]
In Python 3 gibt map
ein Lazy-Objekt zurück. Sie können es mit list()
in eine Liste bringen oder es wie in einer for
-Schleife verwenden, zum Beispiel:
>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]
text = "42 0"
nums = [int(n) for n in text.split()]
l = (int(x) for x in s.split())
Wenn Sie sicher sind, dass es immer zwei ganze Zahlen gibt, können Sie dies auch tun:
a,b = (int(x) for x in s.split())
oder wenn Sie das Array danach ändern möchten
l = [int(x) for x in s.split()]
Das sollte funktionieren:
[ int(x) for x in "40 1".split(" ") ]
Natürlich können Sie split
aufrufen, aber es werden Strings zurückgegeben, keine ganzen Zahlen. Tun
>>> x, y = "42 0".split()
>>> [int(x), int(y)]
[42, 0]
oder
[int(x) for x in "42 0".split()]
Andere Antworten zeigen bereits, dass Sie split () verwenden können, um die Werte in eine list zu bekommen. Wenn Sie nach Pythons Arrays gefragt haben, gibt es eine Lösung:
import array
s = '42 0'
a = array.array('i')
for n in s.split():
a.append(int(n))
Edit: Eine prägnantere Lösung:
import array
s = '42 0'
a = array.array('i', (int(t) for t in s.split()))
Ich schlage vor, zu prüfen, ob der Teilstring eine Ziffer ist:
In [1]: [int(i) for i in '1 2 3a'.split() if i.isdigit()]
Out[1]: [1, 2]
Verwenden Sie einfach strip()
, um Leerzeichen zu entfernen und eine explizite int-Konvertierung für die Variable durchzuführen.
Ex:
a='1 , 2, 4 ,6 '
f=[int(i.strip()) for i in a]
Hier ist meine Antwort für Python 3.
some_string = "2 3 8 61 "
list(map(int, some_string.strip().split()))
Gegeben: text = "42 0"
import re
numlist = re.findall('\d+',text)
print(numlist)
['42', '0']