【问题标题】:Textfile to list form?文本文件列表形式?
【发布时间】:2018-04-17 07:09:22
【问题描述】:

我想将文本文件读入列表形式,但提取文本文件中每个字符的位置以形成数字/定量列表。

一个文本文件的示例(数字被'\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']

我怀疑我在 range(len(split_list)) 上做错了,因为我的输出正确读取了前 7 个字符,但我不知道是什么。

【问题讨论】:

    标签: python-3.x list


    【解决方案1】:

    您使用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
    

    【讨论】:

      猜你喜欢
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 2014-10-22
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多