Як перетворити рядок у список?
Скажіть, рядок схожий text = "a,b,c"
. Після перетворення, text == ['a', 'b', 'c']
і , сподіваюся text[0] == 'a'
, text[1] == 'b'
?
Як перетворити рядок у список?
Скажіть, рядок схожий text = "a,b,c"
. Після перетворення, text == ['a', 'b', 'c']
і , сподіваюся text[0] == 'a'
, text[1] == 'b'
?
Відповіді:
Подобається це:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Крім того, ви можете використовувати, eval()
якщо довіряєте рядок безпечним:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Просто додайте до існуючих відповідей: сподіваємось, у майбутньому ви зустрінете щось подібне:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Але то , що ви маєте справу з прямо зараз , піти з @ Cameron відповідь «s.
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Наступний код Python перетворить ваш рядок у список рядків:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
json
наприклад:json.loads(teststr)
У python вам рідко потрібно перетворити рядок у список, тому що рядки та списки дуже схожі
Якщо у вас дійсно є рядок, який повинен бути символьним масивом, зробіть це:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Зауважте, що струни дуже схожі на списки в python
In [3]: x[0]
Out[3]: 'f'
In [4]: for i in range(len(x)):
...: print x[i]
...:
f
o
o
b
a
r
Рядки - це списки. Майже.
Якщо ви хочете розділити пробіли, ви можете просто скористатися .split()
:
a = 'mary had a little lamb'
z = a.split()
print z
Вихід:
['mary', 'had', 'a', 'little', 'lamb']
()
, тобто взагалі нічого.
Якщо ви дійсно хочете масиви:
>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'
Якщо вам не потрібні масиви, а ви хочете лише за індексом переглядати своїх персонажів, пам'ятайте, що рядок є ітерабельним, як і список, за винятком того, що він незмінний:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Усі відповіді хороші, є й інший спосіб, який полягає в розумінні списку, див. Рішення нижче.
u = "UUUDDD"
lst = [x for x in u]
для розділеного комою списку виконайте наступне
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]
Я зазвичай використовую:
l = [ word.strip() for word in text.split(',') ]
то strip
видалити пробіли навколо слів.
Щоб перетворити string
форму, яку a="[[1, 3], [2, -6]]"
я написав, але ще не оптимізований код:
matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
matrixAr.append(row)
print matrixAr
Приклад 1
>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]
Приклад 2
>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]