[英]Python: read nth value on every line from text file into array
我有一个很大的文本文件,其中包含XYZ数据,每个值都用一个空格分隔:
100000 200000 2.5698
200000 200000 1.9863
200000 400000 2.2587
...
我正在寻找创建每行中只有最后一个值(即Z值)的数组。 到目前为止,我有:
with open(xyzFile) as f:
for eachLine in f:
tmpLine = f.readline()
print("### tmpLine: {0}".format(tmpLine))
如预期的那样,这将打印出文件的第一行:
### tmpLine: 253575 705575 83.710655
如何获取第三个值并迭代到文本文件中的下一行? 我想我需要在这里某个地方进行for循环。 我知道如何将值附加到数组,这将在以下两个过程之间进行:
zArray.append(zValue)
您可以尝试使用numpy的loadtxt
, 此处提供了文档。 您可以将usecols
参数设置为2,以仅读取第3列。 使用少量数据,您提供以下代码,生成第三列的一维数组
import numpy as np
z = np.loadtxt("filename.txt", usecols=2)
print (z)
# output is [ 2.5698 1.9863 2.2587]
通过明智地split
和strip
(如果需要)来尝试此操作
with open(xyzFile) as f:
for eachLine in f:
print("### tmpLine: {0}".format(eachLine.strip().split()[-1].strip()))
您将读取该行,并在空间tmpLine.split(' ')
的基础上)拆分该行,然后将获得该行的数组。
从该数组中获取第三个元素。 tmpLine.split(' ')[2]
zArray = []
with open(xyzFile) as f:
for eachLine in f:
zArray.append(eachLine.split(' ')[2])
乔恩(Jon)提出的另一种列表理解方法是:
with open(xyzFile) as f:
zArray = [eachline.split(' ')[2] for eachline in f]
您可以使用csv
模块
with open(xyzFile) as f:
for row in csv.reader(f, delimiter=" "):
print(row[-1])
结果如下:
2.5698
1.9863
2.2587
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.