Python 我想将数据从文本文件传输到数组
我是新来的,也不熟悉python编程 作为练习,我必须从包含许多行的txt文件中读取数据(lat&lon),并使用QGIS将其转换为shapefile 在阅读之后,我找到了一种将数据提取到数组中的方法,如步骤1所示,但我遇到了soem问题 我使用以下代码Python 我想将数据从文本文件传输到数组,python,Python,我是新来的,也不熟悉python编程 作为练习,我必须从包含许多行的txt文件中读取数据(lat&lon),并使用QGIS将其转换为shapefile 在阅读之后,我找到了一种将数据提取到数组中的方法,如步骤1所示,但我遇到了soem问题 我使用以下代码 X=[] Y=[] f = open('D:/test_data/test.txt','r') for line in f: triplets=f.readline().split() #error X=X.append(triplet
X=[]
Y=[]
f = open('D:/test_data/test.txt','r')
for line in f:
triplets=f.readline().split() #error
X=X.append(triplets[0])
Y=Y.append(triplets[1])
f.close()
for i in X:
print X[i]
有误:
ValueError: Mixing iteration and read methods would lose data
可能这是对丢失其余行的警告,但我现在真的不想要它们。
行
已经是行了。把三胞胎交给我
triplets = line.split()
行
已经是行。把三胞胎交给我
triplets = line.split()
对于f中的行:
已经在文件中的行中进行了迭代,并在执行过程中读取。因此,它应该是:
for line in f:
triplets = line.split()
或者,您也可以按照下面的方法操作,尽管我推荐上面的方法
with open('D:/test_data/test.txt','r') as f:
content = f.readlines()
for line in content:
triplets = line.split()
# append()
有关更多信息,请参见python中的
另外,append()
执行它听起来像什么,所以您不需要赋值
X.append(triplets[0]) # not X=X.append(triplets[0)
对于f中的行:
已经在文件中的行中进行了迭代,并在执行过程中读取。因此,它应该是:
for line in f:
triplets = line.split()
或者,您也可以按照下面的方法操作,尽管我推荐上面的方法
with open('D:/test_data/test.txt','r') as f:
content = f.readlines()
for line in content:
triplets = line.split()
# append()
有关更多信息,请参见python中的
另外,append()
执行它听起来像什么,所以您不需要赋值
X.append(triplets[0]) # not X=X.append(triplets[0)
我做了更改,得到了一个新的错误类型错误:“str”对象不可调用我做了更改,得到了一个新的错误类型错误:“str”对象不可调用这似乎有效。现在,在我尝试打印我从中读取的内容时,我得到了一个错误:TypeError:列表索引必须是整数,而不是最后一行的str,我尝试打印X[i]我知道这些是字符串,必须在float时转换,但使用X.append(float(triplets[0])给我错误:ValueError float()的无效文本: 49,24@NasosGkimi
对于X中的i:
将直接迭代X
的元素。也就是说,i
是一个X
字符串,而不是索引。因此,如果您想使用索引进行迭代,您可以只打印(i)
@NasosGkimi-我真的看不出这里的要点-您可以对范围内的i使用(len(X))
,或者对枚举(X)中的i,elem使用,其中i
是索引,而elem
是对应的字符串元素。@Ramon51。谢谢你的回答。现在我的问题是答案的数量。。。在我的测试文件中,我有10行。。。但程序只读取1。。知道为什么会这样吗?@NasosGkimi是的,我以前注意到过。您的append
在循环之外,因此它只会在循环完成后执行,并且只在最后一个元素上执行。在循环中移动它应该可以做到这一点。这似乎有效。现在,在我尝试打印我从中读取的内容时,我得到了一个错误:TypeError:列表索引必须是整数,而不是最后一行的str,我尝试打印X[i]我知道这些是字符串,必须在float时转换,但使用X.append(float(triplets[0])给我错误:ValueError float()的无效文本: 49,24@NasosGkimi对于X中的i:
将直接迭代X
的元素。也就是说,i
是一个X
字符串,而不是索引。因此,如果您想使用索引进行迭代,您可以只打印(i)
@NasosGkimi-我真的看不出这里的要点-您可以对范围内的i使用(len(X))
,或者对枚举(X)
中的i,elem使用,其中i
是索引,而elem
是对应的字符串元素。@Ramon51。谢谢你的回答。现在我的问题是答案的数量。。。在我的测试文件中,我有10行。。。但程序只读取1。。知道为什么会这样吗?@NasosGkimi是的,我以前注意到过。您的append
在循环之外,因此它只会在循环完成后执行,并且只在最后一个元素上执行。在循环中移动它应该可以做到这一点。