Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chuyển đổi chuỗi biểu diễn danh sách thành danh sách thực trong Python

Chúng ta đôi khi nhận được dữ liệu chứa chuỗi nhưng cấu trúc dữ liệu bên trong luồng lại là một danh sách Python. Trong bài viết này, chúng ta sẽ chuyển đổi chuỗi biểu diễn danh sách thành một danh sách Python thực tế có thể dùng cho thao tác dữ liệu tiếp theo.

Sử dụng eval

Chúng ta biết hàm eval sẽ trả về kết quả thực tế được cung cấp cho nó như tham số. Vì vậy, chúng ta cung cấp chuỗi cho hàm eval và nhận lại danh sách Python.

Ví dụ

stringA = "['Mon', 2,'Tue', 4, 'Wed',3]"  # Chuỗi cho trước
print("Given string : \n", stringA)
# Kiểm tra kiểu
print(type(stringA))
# Sử dụng eval
res = eval(stringA)
# Kết quả
print("The converted list : \n", res)
# Kiểm tra kiểu
print(type(res))

Kết quả

Chạy đoạn mã trên cho kết quả sau:

Given string : ['Mon', 2,'Tue', 4, 'Wed',3] The converted list : ['Mon', 2, 'Tue', 4, 'Wed', 3] 

Sử dụng ast.literal_eval

Trong cách tiếp cận này, chúng ta sử dụng hàm literal_eval từ module ast bằng cách cung cấp chuỗi làm tham số. Nó trả về danh sách Python.

Ví dụ

import ast
stringA = "['Mon', 2,'Tue', 4, 'Wed',3]"  # Chuỗi cho trước
print("Given string : \n", stringA)
# Kiểm tra kiểu
print(type(stringA))
# Sử dụng literal_eval
res = ast.literal_eval(stringA)
# Kết quả
print("The converted list : \n", res)
# Kiểm tra kiểu
print(type(res))

Kết quả

Chạy đoạn mã trên cho kết quả sau:

Given string : ['Mon', 2,'Tue', 4, 'Wed',3] The converted list : ['Mon', 2, 'Tue', 4, 'Wed', 3] 

Sử dụng json.loads

Hàm loads từ module json có thể thực hiện chuyển đổi tương tự, nơi chuỗi được đánh giá và danh sách Python thực tế được tạo ra.

Ví dụ

import json
stringA = '["Mon", 2,"Tue", 4, "Wed",3]'  # Chuỗi cho trước
print("Given string : \n", stringA)
# Kiểm tra kiểu
print(type(stringA))
# Sử dụng loads
res = json.loads(stringA)
# Kết quả
print("The converted list : \n", res)
# Kiểm tra kiểu
print(type(res))

Kết quả

Chạy đoạn mã trên cho kết quả sau:

Given string : ["Mon", 2,"Tue", 4, "Wed",3] The converted list : ['Mon', 2, 'Tue', 4, 'Wed', 3]