我有一个文件,它由多个列表组成,如下所示
[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)
预先感谢
您可以尝试以下方法:
>>> 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()
您可以使用ast.literal_eval()
Using python's eval() vs. ast.literal_eval()?
如果假定这些行并打算将其作为python文字,则只需ast.literal_eval。
为了安全起见,您可能要假设它们是JSON值,在这种情况下,>>> res = []
>>> with open('f.txt') as f:
... for line in f:
... res.append(ast.literal_eval(line))
应该可以解决问题。
假设您有一个文本文件。您可以逐行阅读并追加到主列表。
import jsonlines
r = []
with jsonlines.open('input.jsonl') as reader:
for line in reader:
for item in line:
r.append(item)
print(r)
希望这会有所帮助!
您可以在方括号之间使用split()方法,您可以将符号作为分隔符。
方括号之间给出要分割的符号。也许像这样:
[234, 343, 234, 23, 45, 34, 5, 354, 45, 334, 23]
您可以在方括号之间使用split()方法,您可以将符号作为分隔符。
方括号之间给出要分割的符号。也许像这样:
with open(txt_name, 'r') as f:
values = f.read().splitlines()