使用正则表达式和或为了摆脱不需要的字符

路透社

我对正则表达式感到非常困惑,我需要帮助。我有以下字符串:

x='def{{{12.197835/// -0.001172, 12.19788 7.3E-5, //+{{12.196705 -1.7E-5, 12.196647 -0.001189///}}}Def'

此字符串是 pandasdataframe 中特定列中单元格的一部分。每个单元格都有不同的不需要的字符,主要是字母和“/”或“{”。

我想要这个输出:

x='12.197835,-0.001172, 12.19788,7.3E-5,12.196705 ,-1.7E-5, 12.196647 -0.001189'

(去掉任何不是数字的东西,除了 if 是前面带“-”的数字或 E- 前面带数字的“E-”。

我使用这个表达式是为了识别数字:

print(re.findall(r"\d+\.*\d*",x))
>>>['12.197835', '0.001172', '12.19788', '7.3', '5', '12.196705', '1.7', '5', '12.196647', '0.001189']

但我的问题是这个表达式不保留“-”或“E”。我试图通过以下表达式来保存它们:

print(re.findall(r"\d+\.*\d*",x) or (r"^-?[0-9]\d+\.*\d+*\[E-]",x))

但我得到相同的输出:


>>>['12.197835', '0.001172', '12.19788', '7.3', '5', '12.196705', '1.7', '5', '12.196647', '0.001189']

我想可能是因为我正在使用 or 然后它已经满足第一个条件,所以我也尝试了“and”,但这给出了非常奇怪的结果:

>>>('^-?[0-9]\\d+\\.*\\d+*\\[E-]', 'def{{{12.197835/// -0.001172, 12.19788 7.3E-5, //+{{12.196705 -1.7E-5, 12.196647 -0.001189///}}}Def')

我的最终目标是获得第一个只有数字的字符串,'-' 和 E 后面有'-'(所需的输出)

x='12.197835,-0.001172, 12.19788,7.3E-5,12.196705 ,-1.7E-5, 12.196647 -0.001189'
维克多·斯特里比尤夫

您可以使用

import re
x='def{{{12.197835/// -0.001172, 12.19788 7.3E-5, //+{{12.196705 -1.7E-5, 12.196647 -0.001189///}}}Def'
print(re.findall(r'[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?', x))  # Extracting all numbers into a list
# => ['12.197835', '-0.001172', '12.19788', '7.3E-5', '12.196705', '-1.7E-5', '12.196647', '-0.001189']
print(",".join(re.findall(r'[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?', x))) # Creating a comma-separated string
# => 12.197835,-0.001172,12.19788,7.3E-5,12.196705,-1.7E-5,12.196647,-0.001189

请参阅Python 演示正则表达式演示

正则表达式详情

  • [+-]?- 一个可选的+-
  • \d* - 零个或多个数字
  • \.? - 一个可选的 .
  • \d+ - 一位或多位数字
  • (?:[eE][+-]?\d+)?- 可选出现eE后跟可选的+-,然后是一个或多个数字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用正则表达式删除字符串中不需要的字符

如何使用正则表达式过滤字符串中不需要的字符?

使用正则表达式从字符串中删除不需要的字符组

使用正则表达式从字符串中删除不需要的字符

正则表达式不需要

在C#中使用/不使用正则表达式清除不需要的十六进制字符

我必须使用哪种正则表达式模式来解析这种格式的不需要的字符?

如何使 Vim 在正则表达式控制字符之前不需要反斜杠

如何阻止正则表达式匹配不需要的空字符串?

删除字符串的不需要的部分。正则表达式/ JS

用正则表达式替换不需要的字符

Java,正则表达式,去除不需要的字符[后跟,前导,之间]

正则表达式匹配包含不需要的字符

正则表达式捕获不需要的字符串

正则表达式捕获不需要的左侧字符

正则表达式删除不需要的字符模式

PowerShell WinForms 文本框,防止不需要的正则表达式模式字符

无法使用正则表达式去除不需要的项目

使用正则表达式从R中删除不需要的html标签

在 Flutter 中使用正则表达式验证 URL,而不需要它

通过Java中的正则表达式从字符串中删除不需要的字符

如何在C#中使用正则表达式从字符串中删除所有不需要的字符?

有没有办法用正则表达式替换所有不需要的数字和字符?

正则表达式将不需要的花括号添加到匹配的字符串中

列出迭代和正则表达式,删除我不需要的文本的更好方法是什么?

从正则表达式中删除不需要的匹配项

有条件的正则表达式-不需要的输出

正则表达式从文本文件中捕获不需要的数字

Javascript split()正则表达式在Chrome中返回不需要的逗号