Làm thế nào để bạn chuyển đổi một chuỗi thành một danh sách?
Nói chuỗi là như thế text = "a,b,c"
. Sau khi chuyển đổi, text == ['a', 'b', 'c']
và hy vọng text[0] == 'a'
, text[1] == 'b'
?
Làm thế nào để bạn chuyển đổi một chuỗi thành một danh sách?
Nói chuỗi là như thế text = "a,b,c"
. Sau khi chuyển đổi, text == ['a', 'b', 'c']
và hy vọng text[0] == 'a'
, text[1] == 'b'
?
Câu trả lời:
Như thế này:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Ngoài ra, bạn có thể sử dụng eval()
nếu bạn tin tưởng chuỗi an toàn:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Chỉ để thêm vào các câu trả lời hiện có: hy vọng, bạn sẽ gặp một cái gì đó giống như thế này trong tương lai:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Nhưng những gì bạn đang giải quyết ngay bây giờ , hãy đi với câu trả lời của @ Cameron .
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Mã Python sau đây sẽ biến chuỗi của bạn thành một danh sách các chuỗi:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
json
ví dụ:json.loads(teststr)
Trong python, bạn hiếm khi cần chuyển đổi một chuỗi thành một danh sách, bởi vì các chuỗi và danh sách rất giống nhau
Nếu bạn thực sự có một chuỗi nên là một mảng ký tự, hãy làm điều này:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Lưu ý rằng Chuỗi rất giống danh sách trong 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
Chuỗi là danh sách. Hầu hết.
Trong trường hợp bạn muốn phân chia theo dấu cách, bạn chỉ có thể sử dụng .split()
:
a = 'mary had a little lamb'
z = a.split()
print z
Đầu ra:
['mary', 'had', 'a', 'little', 'lamb']
()
, tức là không có gì cả.
Nếu bạn thực sự muốn mảng:
>>> 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'
Nếu bạn không cần mảng và chỉ muốn tìm chỉ mục cho các ký tự của mình, hãy nhớ một chuỗi là một lần lặp, giống như một danh sách ngoại trừ thực tế là nó không thay đổi:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Tất cả các câu trả lời là tốt, có một cách làm khác, đó là hiểu danh sách, xem giải pháp dưới đây.
u = "UUUDDD"
lst = [x for x in u]
đối với danh sách được phân tách bằng dấu phẩy, hãy làm như sau
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]
Tôi thường sử dụng:
l = [ word.strip() for word in text.split(',') ]
các strip
không gian xung quanh remove từ.
Để chuyển đổi một string
biểu mẫu a="[[1, 3], [2, -6]]"
tôi đã viết chưa được tối ưu hóa mã:
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
Sử dụng Python chức năng:
text=filter(lambda x:x!=',',map(str,text))
ví dụ 1
>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]
Ví dụ 2
>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]