首页 > 解决方案 > 在 Python 中将字符串转换为多维数组

问题描述

我在管理一些以非常糟糕的格式保存的数据时遇到问题。

我有对应于多边形边缘的点的数据。每个多边形的数据由字符串 分隔>,而点的xy值由非统一标准分隔,有时有多个空格,有时有一些空格和一个表格。我尝试使用以下代码将此类数据加载到数组数组中:

f = open('/Path/Data.lb','r')
data = f.read()
splat = data.split('>')

region = []

for number, polygon in enumerate(splat[1:len(splat)], 1):
    region.append(float(polygon))

但是我在尝试运行该float()函数时不断收到错误(我已将其剪掉,因为它要长得多):

ValueError: could not convert string to float: '\n     -73.311      -48.328\n     -73.311      -48.326\n     -73.318      -48.321\n     ...
...     -73.324\t  -48.353\n     -73.315\t  -48.344\n     -73.313\t  -48.337\n'

有没有办法在不修改源文件的情况下将数据转换为浮点数?如果没有,有没有办法轻松修改源文件,以便所有列都以相同的方式分隔?我想这样相同的代码应该可以顺利运行。

谢谢!

标签: pythonarraysstringnumpymultidimensional-array

解决方案


尝试:

with open("PataIce.lb", "r") as file:
    polygons = file.read().strip(">").strip().split(">")
    
region =[]
for polygon in polygons:
    sides = polygon.strip().split("\n")
    points = [[float(num) for num in side.split()[:2]] for side in sides]
    region.append(points)

有些点包含超过 2 个值,我已将脚本限制为在这些情况下仅读取前两个数字。


推荐阅读