python - 将字符串中的 xyz 坐标值提取到列表中

标签 python regex

我有一些数据是从格式如下所示的文件中以字符串形式获取的。我想做的是创建一个向量(在 python 中存储为列表),该向量指示每行的 [x2, y2, z2] 和 [x1, x2, x3] 之间的 x,y,z 方向的差异如下所示的字符串。

一旦我将所需的 [x2, y2, z2] 和 [x1, x2, x3] 提取为整数列表,我应该可以很好地计算差异向量。我需要帮助的是根据下面的数据创建这些 [x2, y2, z2] 和 [x1, x2, x3] 列表。

data = """x1=45 y1=74 z1=55 col1=[255, 255, 255] x2=46 y2=74 z2=55 col2=[255, 255, 255] 
x1=34 y1=12 z1=15 col1=[255, 255, 255] x2=35 y2=12 z2=15 col2=[255, 255, 255] 
x1=22 y1=33 z1=24 col1=[255, 255, 255] x2=23 y2=33 z2=24 col2=[255, 255, 255] 
x1=16 y1=45 z1=58 col1=[255, 255, 255] x2=17 y2=45 z2=58 col2=[255, 255, 255] 
x1=27 y1=66 z1=21 col1=[255, 255, 255] x2=28 y2=66 z2=21 col2=[255, 255, 255]
"""

为了澄清,我只需要弄清楚如何提取单行的 [x2, y2, z2] 和 [x1, x2, x3] 列表。我可以弄清楚如何循环每行并自行计算每行的差异向量。它只是从每一行中提取相关数据并将其重新格式化为可用的格式,这让我很困惑。

我怀疑使用正则表达式是提取此信息的潜在途径。我查看了文档 https://docs.python.org/2/library/re.html并对该文件感到完全困惑和困惑。我只是想要一种易于理解的方式来做到这一点。

最佳答案

对于单行,假设所有行都具有相同的格式,您可以这样做:

import re

a_line = "x1=45 y1=74 z1=55 col1=[255, 255, 255] x2=46 y2=74 z2=55 col2=[255, 255, 255]" 
x1,y1,z1,x2,y2,z2 = list(map(int, re.findall(r'=(\d+)', a_line)))

要处理数据中的多板生产线:

for a_line in data.split("\n"):    
    if a_line:
        x1,y1,z1,x2,y2,z2 = list(map(int, re.findall(r'=(\d+)', a_line)))
        print(x1,y1,z1,x2,y2,z2)

给予:

45 74 55 46 74 55
34 12 15 35 12 15
22 33 24 23 33 24
16 45 58 17 45 58
27 66 21 28 66 21

关于python - 将字符串中的 xyz 坐标值提取到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27120232/

相关文章:

python - BadValueError : Property X must be a str or unicode instance, 不是元组(更新时,而不是创建时)

php - 如何将配对的右括号与正则表达式匹配

java - 正则表达式返回一个 boolean 值而不是一个字符串

java - JDOM setText() 不工作

javascript - 正则表达式,查找不以 ="开头的 URL

python - 在 Heroku 上运行 Python 脚本

python diff SequenceMatcher - 修补列表

python - 重叠的正则表达式

python - 我可以在多处理池星图方法中传递队列对象吗

javascript - 为什么在 Chrome 中有效的正则表达式在 Poltergeist/PhantomJS 中不起作用?