簡體   English   中英

如何從 python 列表中的字符串中提取列表

[英]How to extract a list from a string in a list in python

我從一個 txt 文件中讀取了一個列表,我得到了一個這樣的列表:

["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"]

此列表中的每個列表項都是 str 類型,這是一個問題。

它應該是這樣的:

[[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793], [21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]]

我怎么做?

考慮使用literal_eval

from ast import literal_eval

txt = ["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"]

result = [literal_eval(i) for i in txt]

print(result)

Output:

[[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793], [21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]]

編輯

eval() 請參閱蒂姆·比格萊森的回答。

使用eval() function 以及列表理解,我們可以嘗試:

inp = ["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"]
output = [eval(x) for x in inp]
print(output)

這打印:

[
    [21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793],
    [21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]
]

這是我將如何解決它。

from typing import List

def integer_converter(var: str):
    try: 
    # I used float here in case you have any float in those strs
    return float(var)
    except ValueError:
    # if ValueError, then var is a str and cannot be converted. in this case, return str var
    return var

def clear_input(raw_input: List[str]) -> List:
    raw_input = [x.replace('[','').replace(']','').replace("'",'').replace(' ','').split(',') for x in raw_input]
    raw_input = [[integer_converter(x) for x in sublist] for sublist in raw_input]
    return raw_input

test = ["[21049090, 'AARTIIND22AUGFUT', 'AARTIIND', 850, 1793]", "[21049346, 'ABB22AUGFUT', 'ABB', 250, 3329]"]
test = clear_input(test)
print(test)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM