Python 在两个字符之间替换(无拆分功能)

Python replace between two chars (no split function)

我目前正在调查一个问题,我想替换字符串中的内容。

例如。我有以下字符串:

'123.49, 19.30, 02\n'

我只想要前两个数字,例如“123.49、19.30”。拆分功能是不可能的,因为我有很多数据,有些有,有些没有。

我试过这样的事情:

import re as regex

#result = regex.match(', (.*)\n', string)
result = re.search(', (.*)\n', string)
print(result.group(1))

这不起作用。有人可以帮助我吗?

提前致谢

你可以这样做:

reg=r'(\d+\.\d+), (\d+\.\d+).*'
if(re.search(reg, your_text)):
  match = re.search(reg, your_text)
  first_num = match.group(1)
  second_num = match.group(2)

或者,也可以在开头添加 ^ 符号,确保始终只取前两个。

import re
string = '123.49, 19.30, 02\n'
pattern = re.compile('^(\d*.?\d*), (\d*.?\d*)')

result = re.findall(pattern, string)
result

输出: [('123.49', '19.30')]

在您使用的代码中 import re as regex。如果这样做,则必须改用 regex.search 或 re.search.

但在这种情况下,您可以只使用 re

如果您使用 , (.*),您将捕获第一次出现 , 之后的所有内容,并且您不会考虑数字。

如果您想要问题 '123.49, 19.30' 中所述的前 2 个数字用逗号分隔,您可以在不使用捕获组的情况下匹配它们:

\b\d+\.\d+,\s*\d+\.\d+\b

或匹配 1 个或多个以逗号开头的重复:

\b\d+\.\d+(?:,\s*\d+\.\d+)+\b

regex demo | Python demo

因为re.search也可以returnNone,可以先看看有没有结果(不需要运行re.search两次)

import re

regex = r"\b\d+\.\d+(?:,\s*\d+\.\d+)+\b"
s = "123.49, 19.30, 02"

match = re.search(regex, s)

if match:
    print(match.group())

输出

123.49, 19.30