如何将字符串转换为列表?

问题描述 投票:3回答:6

我有一个文件,它由多个列表组成,如下所示

[234,343,234]
[23,45,34,5]
[354,45]
[]
[334,23]

我正在尝试逐行阅读并附加到python中的单个列表。

怎么做?

我到目前为止尝试过]

with open("pos.txt","r") as filePos:
    pos_lists=filePos.read()
new_list=[]
for i in pos_lists.split("\n"):
    print(type(i)) #it is str i want it as list
    new_list.extend(i)

print(new_list)

预先感谢

python list python-2.7 file
6个回答
5
投票

您可以尝试以下方法:

>>> from ast import literal_eval
>>> with open(YOURTEXTFILE) as f:
...    final_list = [literal_eval(elem) for elem in f.readlines()]
>>> final_list
[[234, 343, 234], [23, 45, 34, 5], [354, 45], [], [334, 23]]

或,

>>> from ast import literal_eval
>>> with open(YOURTEXTFILE) as f:
...    final_list = sum(map(literal_eval, s.readlines()), [])
>>> final_list
[234, 343, 234, 23, 45, 34, 5, 354, 45, 334, 23]

您想要的任何人。

使用python内置eval()可以完成相同的操作,但是,建议不要对不受信任的代码使用eval(),而建议仅对非常有限的数据类型使用eval()。有关更多信息,请参见ast.literal_eval()


1
投票

您可以使用ast.literal_eval()

Using python's eval() vs. ast.literal_eval()?

0
投票

如果假定这些行并打算将其作为python文字,则只需ast.literal_eval

为了安全起见,您可能要假设它们是JSON值,在这种情况下,>>> res = [] >>> with open('f.txt') as f: ... for line in f: ... res.append(ast.literal_eval(line)) 应该可以解决问题。


0
投票

如果每行都是有效的JSON数组/对象,则可以使用ast.literal_eval(line)

json.loads(line)

输出:

jsonlines

-1
投票

假设您有一个文本文件。您可以逐行阅读并追加到主列表。

import jsonlines
r = []
with jsonlines.open('input.jsonl') as reader:
    for line in reader:
        for item in line:
            r.append(item)
print(r)

希望这会有所帮助!


-2
投票

您可以在方括号之间使用split()方法,您可以将符号作为分隔符。

方括号之间给出要分割的符号。也许像这样:

[234, 343, 234, 23, 45, 34, 5, 354, 45, 334, 23]

-2
投票

您可以在方括号之间使用split()方法,您可以将符号作为分隔符。

方括号之间给出要分割的符号。也许像这样:

with open(txt_name, 'r') as f:
    values = f.read().splitlines()
© www.soinside.com 2019 - 2024. All rights reserved.