Hướng dẫn how do i convert a string to a list in brackets in python? - làm cách nào để chuyển đổi chuỗi thành danh sách trong ngoặc trong python?

Không cần nhập bất cứ thứ gì hoặc để đánh giá. Bạn có thể làm điều này trong một dòng cho hầu hết các trường hợp sử dụng cơ bản, bao gồm cả trường hợp được đưa ra trong câu hỏi ban đầu.

Lót

l_x = [i.strip[] for i in x[1:-1].replace['"',""].split[',']]

Giải trình

x = '[ "A","B","C" , " D"]'
# String indexing to eliminate the brackets.
# Replace, as split will otherwise retain the quotes in the returned list
# Split to convert to a list
l_x = x[1:-1].replace['"',""].split[',']

Outputs:

for i in range[0, len[l_x]]:
    print[l_x[i]]
# vvvv output vvvvv
'''
 A
B
C
  D
'''
print[type[l_x]] # out: class 'list'
print[len[l_x]] # out: 4

Bạn có thể phân tích và làm sạch danh sách này khi cần thiết bằng cách sử dụng danh sách hiểu.

l_x = [i.strip[] for i in l_x] # list comprehension to clean up
for i in range[0, len[l_x]]:
    print[l_x[i]]
# vvvvv output vvvvv
'''
A
B
C
D
'''

Danh sách lồng nhau

Nếu bạn có danh sách lồng nhau, nó sẽ khó chịu hơn một chút. Nếu không sử dụng regex [điều này sẽ đơn giản hóa việc thay thế] và giả sử bạn muốn trả lại một danh sách dẹt [và Zen of Python nói rằng căn hộ tốt hơn so với lồng nhau]:

x = '[ "A","B","C" , " D", ["E","F","G"]]'
l_x = x[1:-1].split[',']
l_x = [i
    .replace[']', '']
    .replace['[', '']
    .replace['"', '']
    .strip[] for i in l_x
]
# returns ['A', 'B', 'C', 'D', 'E', 'F', 'G']

Nếu bạn cần giữ lại danh sách lồng nhau, nó sẽ trở nên xấu hơn một chút, nhưng nó vẫn có thể được thực hiện chỉ với các biểu thức thông thường và danh sách hiểu:

import re

x = '[ "A","B","C" , " D", "["E","F","G"]","Z", "Y", "["H","I","J"]", "K", "L"]'
# Clean it up so the regular expression is simpler
x = x.replace['"', ''].replace[' ', '']
# Look ahead for the bracketed text that signifies nested list
l_x = re.split[r',[?=\[[A-Za-z0-9\',]+\]]|[?

Bài Viết Liên Quan

Chủ Đề