python - 在 Python 中将字符串转换为多维数组
问题描述
我在管理一些以非常糟糕的格式保存的数据时遇到问题。
我有对应于多边形边缘的点的数据。每个多边形的数据由字符串 分隔>
,而点的x
和y
值由非统一标准分隔,有时有多个空格,有时有一些空格和一个表格。我尝试使用以下代码将此类数据加载到数组数组中:
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'
有没有办法在不修改源文件的情况下将数据转换为浮点数?如果没有,有没有办法轻松修改源文件,以便所有列都以相同的方式分隔?我想这样相同的代码应该可以顺利运行。
谢谢!
解决方案
尝试:
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 个值,我已将脚本限制为在这些情况下仅读取前两个数字。
推荐阅读
- python - 如何在烧瓶中闪烁用户会话已过期的消息
- laravel - 在 Laravel 中使用两个数据库时密码验证失败
- apache-flink - Flink 水印没有在 Python 中推进,卡在 -9223372036854775808
- android - 当用户切换到 Android Studio Kotlin 中的其他页面时,如何停止播放音乐?
- reactjs - 无法在反应 js 应用程序中应用 Bootstrap5 粘性页脚模板
- reactjs - 未处理的拒绝(TypeError):这是未定义的
- android - 从包含另一个图像的小部件渲染图像
- go - 用于双向流的 GRPC 刷新令牌
- reactjs - 使用 Three.js 模拟通过管道的水流
- php - 根据 shapfile 数据创建热图