将一组坐标从字符串转换为int

问题描述 投票:-1回答:2

如何将我的siteData转换为从字符串到int的坐标列表?

print(siteData)
    cat|x|y|z
    1|343741.396330097|1029255.04807763|0
    2|342270.660062496|1030198.57861216|0
    3|339743.874252208|1030705.47801259|0
    4|343031.709457817|1027263.37839108|0
    5|339453.578589758|1029954.65896125|0
    6|341376.669330771|1029549.5339487|0
    7|339224.904513178|1030438.74647616|0
    8|340285.317292692|1029431.45860403|0
    9|343135.800101739|1029804.27059289|0
    10|338982.428513304|1028857.42081259|0
    11|338405.612076696|1034287.30455498|0
    12|338080.457138754|1034337.35427931|0
    13|338944.90541069|1034519.90737124|0
    14|340963.209546547|1032528.77710582|0
    15|337891.948788692|1030626.74686363|0
python python-2.7 gis grass
2个回答
0
投票

基于Hozayfa的评论,您可以按照以下步骤进行操作:

lineWise = [line.strip() for line in siteData.split('\n')][1:]
# This creates a list containing each row of siteData as a separate item and skips the header
for row in lineWise:
    data = row.split('|')
    cat = int(data[0])
    x = int(float(data[1]))
    y = int(float(data[2]))
    z = int(float(data[3]))

您可以在循环内使用变量cat, x, yz;它们的类型将为int

编辑:假设siteData看起来完全像这样:

cat|x|y|z
1|343741.396330097|1029255.04807763|0
2|342270.660062496|1030198.57861216|0
3|339743.874252208|1030705.47801259|0
4|343031.709457817|1027263.37839108|0
5|339453.578589758|1029954.65896125|0
6|341376.669330771|1029549.5339487|0
7|339224.904513178|1030438.74647616|0
8|340285.317292692|1029431.45860403|0
9|343135.800101739|1029804.27059289|0
10|338982.428513304|1028857.42081259|0
11|338405.612076696|1034287.30455498|0
12|338080.457138754|1034337.35427931|0
13|338944.90541069|1034519.90737124|0
14|340963.209546547|1032528.77710582|0
15|337891.948788692|1030626.74686363|0

0
投票

我认为csv模块更适合解析此类数据:

import csv
points = []
reader = csv.DictReader(siteData.strip().splitlines(), delimiter="|", quotechar='"')
for row in reader:
    point = {
        "id": int(row["cat"]), 
        "x": float(row["x"]),
        "y": float(row["y"]),
        "z": float(row["z"])
    }
    points.append(point)

for point in points:
    print(point)

输出:

{'id': 1, 'x': 343741.396330097, 'y': 1029255.04807763, 'z': 0.0}
{'id': 2, 'x': 342270.660062496, 'y': 1030198.57861216, 'z': 0.0}
{'id': 3, 'x': 339743.874252208, 'y': 1030705.47801259, 'z': 0.0}
{'id': 4, 'x': 343031.709457817, 'y': 1027263.37839108, 'z': 0.0}
{'id': 5, 'x': 339453.578589758, 'y': 1029954.65896125, 'z': 0.0}
{'id': 6, 'x': 341376.669330771, 'y': 1029549.5339487, 'z': 0.0}
{'id': 7, 'x': 339224.904513178, 'y': 1030438.74647616, 'z': 0.0}
{'id': 8, 'x': 340285.317292692, 'y': 1029431.45860403, 'z': 0.0}
{'id': 9, 'x': 343135.800101739, 'y': 1029804.27059289, 'z': 0.0}
{'id': 10, 'x': 338982.428513304, 'y': 1028857.42081259, 'z': 0.0}
{'id': 11, 'x': 338405.612076696, 'y': 1034287.30455498, 'z': 0.0}
{'id': 12, 'x': 338080.457138754, 'y': 1034337.35427931, 'z': 0.0}
{'id': 13, 'x': 338944.90541069, 'y': 1034519.90737124, 'z': 0.0}
{'id': 14, 'x': 340963.209546547, 'y': 1032528.77710582, 'z': 0.0}
{'id': 15, 'x': 337891.948788692, 'y': 1030626.74686363, 'z': 0.0}
© www.soinside.com 2019 - 2024. All rights reserved.