逐行读取txt文件到python

时间:2017-07-11 07:45:24

标签: python

我的格式为txt-file:

1 2 3 4 5 6
7 8 9 10 11 
12 13 14 15 

所以对我来说,线条显然是通过开始一条新线分开的。

现在我想读取这些行并将每一行存储到一个新变量中。我试过了:

with open('centroids_ET.txt') as f:
      CD_cent=f.readlines()  

还有:

with open('centroids_ET.txt') as f:
     CD_cent = []
     for line in f:
           CD_cent.append(line)

但它总是将所有其他行存储在此变量中。 我检查print(len(line))是否识别出所有行,但它看起来像是一行。

所以我的问题,我该如何解决这个问题?这可能是txt文件布局的问题吗?我是否需要以特殊方式分隔txt文件中的行? 提前谢谢!

3 个答案:

答案 0 :(得分:3)

现在,列表中的所有内容都应该是您从需要的角度来看所需要的一切 - 将所有内容放在单独的变量中没有任何实际优势,除非它提高了代码的易读性/质量。

(您始终可以通过索引从0开始访问CD_cent中的元素.e; g获取您将使用的{&n}; nd元素CD_cent[1]

但是,如果您知道文件中的行数,则可以随时执行此操作

with open("My_File") as f:
    #We know there are 3 lines
    #You may want to rstrip to remove newline characters
    line1 = f.readline()
    line2 = f.readline()
    line3 = f.readline()

现在,如果你没有,我强调这似乎毫无用处,你可以随时这样做:

with open("MY_FILE") as f:
    #NUM_LINES can change
    #You may want to rstrip to remove newline characters
    for lineNum in range(1,NUM_LINES+1):
        exec("line"+str(lineNum)+" = f.readline()")

现在,如果line1为3,line2line3,......,则会生成变量NUM_LINESline1line2,如果line5是5等,则NUM_LINES

请注意,此代码是python 3.4,我相信你正在使用

答案 1 :(得分:1)

修改:更简单,更短https://stackoverflow.com/a/3277516/2019601

input.txt中:

1 2 3 4 5 6
7 8 9 10 11 
12 13 14 15 

test.py:

with open("input.txt") as fh:
  content = fh.read()

lines = []
for line in content.split("\n"):
  lines.append(line)

print(lines) 

输出:(三行 - >数组中的三个元素)

['1 2 3 4 5 6', '7 8 9 10 11 ', '12 13 14 15 ']

答案 2 :(得分:0)

试试这个:

    def main():
    fname = "PythonQuestion.txt"
    with open(fname) as f:
        content = f.readlines()
    # you may also want to remove whitespace characters like `\n` at the end of each line
    content = [x.strip() for x in content]
    print content

if __name__ == '__main__':
    main()

这将产生一个包含以下内容的数组:

['1 2 3 4 5 6', '7 8 9 10 11', '12 13 14 15']