繁体   English   中英

Python:从文本文件到数组的每一行读取第n个值

[英]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]

通过明智地splitstrip (如果需要)来尝试此操作

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM