Python Regex在所有3D数组中查找第二个值
我在文本文件中有一些空间x、y、z数据,格式如下:Python Regex在所有3D数组中查找第二个值,python,arrays,regex,Python,Arrays,Regex,我在文本文件中有一些空间x、y、z数据,格式如下: (0.00024955 0 0) (3.06169e-05 -1.51066e-08 -2.54633e-08) (3.02857e-05 1.38107e-08 -2.52017e-08) (0.00024955 0 0) 我想转换为只包含第二个值的数组。我用regex来做这个,它自然只抓取了第一个数字,这是我一开始想要的。但是现在,我只想要y值。这是我的正则表达式,它获取了第一个x值: Ux[i] = Ux[i].strip(str_ch
(0.00024955 0 0) (3.06169e-05 -1.51066e-08 -2.54633e-08) (3.02857e-05 1.38107e-08 -2.52017e-08) (0.00024955 0 0)
我想转换为只包含第二个值的数组。我用regex来做这个,它自然只抓取了第一个数字,这是我一开始想要的。但是现在,我只想要y值。这是我的正则表达式,它获取了第一个x值:
Ux[i] = Ux[i].strip(str_chars)
Ux[i] = re.search(r'-?[\d.]+(?:e-?\d+)?', Ux[i]).group()
其中str_chars=。关于如何更改正则表达式以生成y值,有什么想法吗
谢谢我会在这里使用re.findall和适当的正则表达式:
inp = "(0.00024955 0 0) (3.06169e-05 -1.51066e-08 -2.54633e-08) (3.02857e-05 1.38107e-08 -2.52017e-08) (0.00024955 0 0)"
nums = re.findall(r'\(-?\d+(?:\.\d+)?(?:e-?\d+)? (-?\d+(?:\.\d+)?(?:e-?\d+)?) -?\d+(?:\.\d+)?(?:e-?\d+)?\)', inp)
print(nums)
这张照片是:
['0', '-1.51066e-08', '1.38107e-08', '0']
我使用的正则表达式模式匹配了整个x、y、z元组,其中每个元组的数量都使用以下正则表达式模式匹配:
-?\d+(?:\.\d+)?(?:e-?\d+)?
说明:
-? match optional leading negative sign
\d+ match one or more whole digits
(?:\.\d+)? match optional decimal component
(?:e-?\d+)? match optional +/- exponent
我会在这里使用re.findall和适当的正则表达式:
inp = "(0.00024955 0 0) (3.06169e-05 -1.51066e-08 -2.54633e-08) (3.02857e-05 1.38107e-08 -2.52017e-08) (0.00024955 0 0)"
nums = re.findall(r'\(-?\d+(?:\.\d+)?(?:e-?\d+)? (-?\d+(?:\.\d+)?(?:e-?\d+)?) -?\d+(?:\.\d+)?(?:e-?\d+)?\)', inp)
print(nums)
这张照片是:
['0', '-1.51066e-08', '1.38107e-08', '0']
我使用的正则表达式模式匹配了整个x、y、z元组,其中每个元组的数量都使用以下正则表达式模式匹配:
-?\d+(?:\.\d+)?(?:e-?\d+)?
说明:
-? match optional leading negative sign
\d+ match one or more whole digits
(?:\.\d+)? match optional decimal component
(?:e-?\d+)? match optional +/- exponent
您可能想考虑使用,先将其分割成元组,然后再在空间上获取中间值。如果需要,可以使用以下方法将其转换为数字:
输出:[0.0, -1.51066e-08, 1.38107e-08, 0.0]
您可能想考虑使用,先将其分割成元组,然后再在空间上获取中间值。如果需要,可以使用以下方法将其转换为数字:
输出:[0.0, -1.51066e-08, 1.38107e-08, 0.0]