【问题标题】:converting a textfile into a list on python将文本文件转换为python上的列表
【发布时间】:2014-11-30 12:49:03
【问题描述】:
def prepositions():
    file = open('prepositions.txt', 'r')
    thetext = [line.split(',') for line in file.readlines()]
    for line in file.readlines():
        row.append([line])
        for i in line.split(","):
            row[-1].append(i)
            print(prepositions)

我有一个名为 prepostions.txt 的文件,其中包含用逗号分隔的介词,例如:

害怕,针对,担心,赞成,关于...的文章等。

我正在尝试将其转换为列表并打印出列表,但是当我运行上面的代码时,即使没有出现错误,也没有打印出任何内容。 因此,例如,我希望它打印以下内容并将其保存为变量中的列表:

害怕

瞄准

担心

批准

关于

的文章

【问题讨论】:

  • 为什么要读两次文件?

标签: python list python-3.x split text-files


【解决方案1】:

为什么需要两次读取文件?读一遍,转换成列表:

def prepositions():
    items = []
    with open('test.txt') as input:
        for line in input:
            items.extend(line.strip().split(','))
    return items

print(prepositions())

【讨论】:

    【解决方案2】:
    file = open('prepositions.txt', 'r')
    thetext = [line.split(',') for line in file.readlines()]
    

    执行此操作后,文件指针位于末尾。因此下一个 readlines() 将不起作用。在第二个 readlines 之前使用 file.seek(0) 并且有很多错误。改用这个

    def prepositions():
        file = open('input.txt', 'r')
        return [line.split(',') for line in file.readlines()]
    
    print(prepositions)
    

    【讨论】:

    • 即使解决了这个问题,OP 的代码仍然无法工作...考虑改写
    • row 未在函数内定义(但可能在其他地方),prepositions 未定义,而 thetext 已定义但未使用。此外,row 将包含每行的全文及其部分内容,这可能不是预期的结果。
    【解决方案3】:
    #The filename
    filen = "awesome.txt"
    #convert line into the list
    lines = [line.strip() for line in open(str(filen))]
    #getting line count and print out
    with open(str(filen)) as f:
        c = sum(1 for _ in f)
    i=0
    n=int(c)
    while i < n:
        print (str(lines[int(i)])) 
        i=i+1  
    

    我不知道这是否有帮助,所以如果文本文件的结构是这样的,那么这就是你的答案 :D :

    你好

    让我开心
    冷静点
    随便
    等等

    【讨论】:

      【解决方案4】:

      应该这样做:

      def prepositions():
          with open('prepositions.txt', 'r') as myFile:
              prepositions = myFile.read().split(",").split("\n")
          for preposition in prepositions:
              print preposition
      

      您的问题似乎是您从未定义行,即:

      row = []
      

      意味着你不断地覆盖它,最后你会得到一个空列表,因为你添加的最后一个值是空行或空格。

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 2013-06-12
        • 2019-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        相关资源
        最近更新 更多