it-swarm.com.de

Wie kann man eine Zeichenfolge in Python in ganze Zahlen aufteilen?

Ich habe einen String "42 0" (zum Beispiel) und brauche ein Array der beiden Ganzzahlen. Kann ich einen .split auf einem Feld ausführen?

38
Jonathan

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]
81
text = "42 0"
nums = [int(n) for n in text.split()]
51
kindall
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()]
10
GWW

Das sollte funktionieren:

[ int(x) for x in "40 1".split(" ") ]
7
Bruno

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()]
4
Fred Foo

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()))
3
GreenMatt

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]
1
Dos

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]
0
abhi

Hier ist meine Antwort für Python 3.

some_string = "2 3 8 61 "

list(map(int, some_string.strip().split()))
0
livelifelively

Gegeben: text = "42 0"

import re
numlist = re.findall('\d+',text)

print(numlist)

['42', '0']
0
Larry Bunch