Python - 将内容文件嵌入到嵌套列表中

时间:2010-03-09 16:27:12

标签: python file list newline tabs

我有一个带制表符分隔格式的文件,带有尾随换行符,例如

123   abc
456   def
789   ghi

我希望编写函数将文件内容转换为嵌套列表。到目前为止,我尝试过:

def ls_platform_ann():
    keyword = []
    for line in open( "file", "r" ).readlines():
        for value in line.split():
            keyword.append(value)

def nested_list_input():
    nested_list = []
    for line in open("file", "r").readlines():
        for entry in line.strip().split():
            nested_list.append(entry)
            print nested_list

前者创建一个嵌套列表,但包含\ n和\ t字符。后者不是一个嵌套列表,而是许多没有\ n和\ t字符的等效列表。

有人帮忙吗?

此致 S; - )

3 个答案:

答案 0 :(得分:8)

您需要csv模块。

import csv

source = "123\tabc\n456\tdef\n789\tghi"
lines = source.split("\n")

reader = csv.reader(lines, delimiter='\t')

print [word for word in [row for row in reader]]

输出:

[['123', 'abc'], ['456', 'def'], ['789', 'ghi']]

在上面的代码中,我将文件的内容放在那里以便于测试。如果您从磁盘中读取文件,也可以执行此操作(可能会被认为更干净):

import csv

reader = csv.reader(open("source.csv"), delimiter='\t')

print [word for word in [row for row in reader]]

答案 1 :(得分:3)

首先,看看csv模块,它应该为你处理空白。您可能还想在值/条目上调用strip()

答案 2 :(得分:3)

不涉及csv模块的另一个选项是:

data = [[item.strip() for item in line.rstrip('\r\n').split('\t')] for line in open('input.txt')]

作为多行声明,它看起来像这样:

data = []
for line in open('input.txt'):
    items = line.rstrip('\r\n').split('\t')   # strip new-line characters and split on column delimiter
    items = [item.strip() for item in items]  # strip extra whitespace off data items
    data.append(items)