我想将文本文件读入列表形式,但要提取文本文件中每个字符的位置,以形成数字/定量列表。
一个文本文件的示例(在数字被'\ t'分割后):
3 ---
2 / \
1 / \
0 --- \
-1 \
最终输出如下: [0,0,0,1,2,3,3,3,2,1,0,-1]
目前我有:
with open("file.txt", "r") as text:
split_list = []
for x in text:
y = list(x.split("\t"))
split_list.append(y)
list_numbers = []
for a in range(len(split_list)):
for line in split_list:
if line[1][a] != " ":
indexes.append(line[0])
print(indexes)
给出输出:['0','0','0','1','2','3','3']
我怀疑我对范围(len(split_list))做错了,因为我的输出正确读取了前7个字符,但我不知道是什么。
答案 0 :(得分:0)
你使用split_list
的长度(图表的高度)作为每一行的长度(图表的宽度)你应该真正颠倒嵌套循环的顺序,这样你就可以告诉行中字符串的长度:
indexes = []
with open("file.txt", "r") as text:
split_list = []
for x in text:
y = list(x.split("\t"))
split_list.append(y)
list_numbers = []
for line in split_list:
for ch in line[1]:
if ch != " ":
indexes.append(line[0])
print(indexes)
但是你的列表不会按你想要的顺序排列,但是可以通过记住位置(用enumerate()
)然后按位置排序来修复,为了方便,我将它压缩为1循环:
unordered_indexes = []
with open("file.txt", "r") as text:
for line in text:
val,data = line.split("\t")
for pos,ch in enumerate(data):
if ch != " " and ch != "\n":
unordered_indexes.append((val,pos))
unordered_indexes.sort(key=lambda x: x[1])
indexes = [i[0] for i in unordered_indexes]
print indexes