Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Regex在所有3D数组中查找第二个值_Python_Arrays_Regex - Fatal编程技术网

Python Regex在所有3D数组中查找第二个值

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

我在文本文件中有一些空间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_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]