我的格式为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文件中的行? 提前谢谢!
答案 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,line2
,line3
,......,则会生成变量NUM_LINES
,line1
和line2
,如果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']