读取文件的每一行,并为每个文件提供一个ID - Python

时间:2016-04-12 19:06:15

标签: python

我需要读取输入文件的每一行,并为每个输入文件分配自己的ID,以便以后识别它。

如果我知道文件的行数或者文件很短但是我需要让它能够获取任意行数的文件,这将很简单

例如我正在使用的试用文件包含:

somewhere over rainbow bluebirds fly birds fly over rainbow why why
double time population long takes population double size
whoa full rainbow way double rainbow double rainbow way

我需要单独阅读每一行并为其分配一个ID,以便为somewhere over rainbow bluebirds fly birds fly over rainbow why why分配ID 1,依此类推。

我似乎无法找到动态创建变量/变量名称的方法,而且我也不知道有任何其他方式自动分配ID。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:3)

您可以将这些行存储在字典中,并将键作为ID:

with open(myfile, 'r') as f:
    lines = {i: line for i, line in emumerate(f, 1)}

这将生成一个数字从1开始的字典作为键:

{
    1: "somewhere over rainbow bluebirds fly birds fly over rainbow why why",
    2: "double time population long takes population double size",
    3: "whoa full rainbow way double rainbow double rainbow way"
}

enumerate function的第二个参数设置枚举的起始编号,因此在这种情况下,我们从一个开始索引;如果没有提供起始编号,则默认值为零。

答案 1 :(得分:1)

for line_no,line in enumerate(file,1):
    ...

line_no将是您的id ...我想

答案 2 :(得分:0)

您可以使用dict存储ID为

的行

这是一个例子

rows = {}
n = 1
with open(filename) as f:
    for line in f:
        rows[n] = line
        n += 1

答案 3 :(得分:0)

我可能只是使用一个列表,其位置为ID:

ls = []
with open(file, 'r') as f:
    for line in f:
        ls.append(line.rstrip()) 

答案 4 :(得分:0)

字典似乎是解决这个问题的好方法。我也会使用枚举来自动获取行号。

file_name = 'text.txt'
with open(file_name, 'r') as f:
    indexes = {index:value for index, value in enumerate(f)}
>>>indexes[0]
'somewhere over rainbow bluebirds fly birds fly over rainbow why why\n'