【问题标题】:Reading text file contents into a list将文本文件内容读入列表
【发布时间】:2018-03-15 03:24:26
【问题描述】:

我有一个文本文件,其中包含:

1:PAPER TOWNS,TOMORROWLAND
2:ENTOURAGE,JUPITER ASCENDING

我打算将它们读入一个输出列表:

[[1,'PAPERTOWNS','TOMORROWLAND'],[2,'ENTOURAGE','JUPITERASCENDING']]

我写过:

def read_file():
    fileName = "testing.txt"
    testFile = open(fileName)
    table = []

    for line in testFile:
        contents = line.strip().split(':')
        contents[0] = int(contents[0])
        contents[1] = contents[1].replace(' ','')
        table.append(contents)
    print(table)

我几乎设法得到我想要的输出,但我想不出一种方法来分离字符串:

[[1,'PAPERTOWNS,TOMORROWLAND'],[2,'ENTOURAGE,JUPITERASCENDING']]

[[1,'PAPERTOWNS','TOMORROWLAND'],[2,'ENTOURAGE','JUPITERASCENDING']]

【问题讨论】:

  • 你的文件就像一个CSV文件,只是分隔符可以是冒号或逗号,所以我们在pandas中使用了一个正则表达式。结果是一条线。

标签: python csv file-io file-import


【解决方案1】:

您可以用逗号分隔第二个元素。

演示

def read_file():
    fileName = "testing.txt"
    testFile = open(fileName)
    table = []

    for line in testFile:
        contents = line.strip().split(':')
        table.append([int(contents[0])] + contents[1].split(","))
    print(table)

输出:

[[1, 'PAPER TOWNS', 'TOMORROWLAND'], [2, 'ENTOURAGE', 'JUPITER ASCENDING']]

使用正则表达式:

import re
def read_file():
    fileName = "testing.txt"
    testFile = open(fileName)
    table = []

    for line in testFile:
        contents = re.split("[,:]+", line.strip())
        table.append(contents)
    print(table)

输出:

[['1', 'PAPER TOWNS', 'TOMORROWLAND'], ['2', 'ENTOURAGE', 'JUPITER ASCENDING']]

【讨论】:

    【解决方案2】:

    这是一个带有熊猫的单线。您的文件就像一个 CSV 文件,只是分隔符可以是冒号或逗号,所以我们使用正则表达式:

    import pandas as pd
    
    df = pd.read_csv('file.txt', header=None, sep=r'[:,]')
    

    【讨论】:

    • (忽略 ParserWarning 或使用 try...except ParserWarning 抑制它)
    【解决方案3】:

    你可以用多个分隔符分割一个字符串:

    import re
    print([[int(re.split(':|,', line.strip())[0])]+re.split(':|,', line.strip())[1:] for line in open('text_file','r')])
    

    输出:

    [[1, 'PAPER TOWNS', 'TOMORROWLAND'], [2, 'ENTOURAGE', 'JUPITER ASCENDING']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多