我在一个文本文件中保存了一个二维列表,看起来像这样(显示前两个条目):
('9b7dad', "text", 'http://imgur.com/gallery/SPdGm27', '1', 'A', 5)
('2b6ebj', 'text2', 'https://i.redd.it/lzft358csdi21.jpg', '1', 'B', 6)
应如何将其加载到列表中? (例如list[0][0] = '9b7dad'
,list[1][1] = 'text2'
等)
答案 0 :(得分:1)
您可以尝试以下方法:
f = open(<your file path>)
result = [
[g.replace("'", "")
for g in l.strip('()\n').replace(' ', '').replace('"', '').split(',')]
for l in f.readlines()]
f.close()
答案 1 :(得分:1)
给出一个文本文件,其中每一行都以您显示的形式显示:
('9b7dad', "text", 'http://imgur.com/gallery/SPdGm27', '1', 'A', 5)
('2b6ebj', 'text2', 'https://i.redd.it/lzft358csdi21.jpg', '1', 'B', 6)
您可以使用Pandas,它提供了一种更直接的方式来处理/操纵不同的数据类型。
导入熊猫并读取文件,这里称为“ stack.txt”:
import pandas as pd
data = pd.read_csv('stack.txt', sep=",", header=None)
仅返回列表列表:
alist = data.values.tolist()
打印以检查:
print(alist)
[['9b7dad', 'text', 'http://imgur.com/gallery/SPdGm27', '1', 'A', 5],
['2b6ebj', 'text2', 'https://i.redd.it/lzft358csdi21.jpg', '1', 'B', 6]]
如果需要处理列:
for i in range(len(data.columns)):
if i == 0:
data[i] = data[i].map(lambda x: str(x)[1:])
data[i] = data[i].map(lambda x: str(x)[1:-1])
if i == 5:
data[i] = data[i].map(lambda x: str(x)[:-1])
data[i] = data[i].astype(int)
if 0 < i < 5:
data[i] = data[i].map(lambda x: str(x)[2:-1])
答案 2 :(得分:0)
#!/usr/bin/env python
import sys
myList = []
for line in sys.stdin:
elems = line.strip('()\n').replace(' ', '').split(',')
elems = [x.strip('\'\"') for x in elems]
myList.append(elems)
print(myList[0][0])
print(myList[1][1])
要使用:
$ python ./load.py < someText.txt
9b7dad
text2
根据需要使用int()
,float()
或str()
将elems
中的字段强制转换为某些类型。使用try..except
块来捕获格式错误的输入。
答案 3 :(得分:0)
import ast
with open(file_name) as f:
content = f.readlines()
content = [list(ast.literal_eval(x)) for x in content]
如何读取文件: In Python, how do I read a file line-by-line into a list?
答案 4 :(得分:0)
尝试一下(将元组转换为列表):
my_list = []
my_list.append(list('9b7dad', "text", 'http://imgur.com/gallery/SPdGm27', '1', 'A', 5))
my_list.append(list('2b6ebj', 'text2', 'https://i.redd.it/lzft358csdi21.jpg', '1', 'B', 6))
result是列表的列表,即二维列表。您可以轻松地修改代码以一次在for循环中获取一行并将其附加到列表中。如果它是逗号分隔的列表而不是元组,请考虑使用split(',')
mylist = []
with open(filename, 'r') as my_file:
for text in my_file.readlines()
my_list.append(text.split(','))