繁体   English   中英

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

正则表达式演示| Python 演示

由于re.search也可以返回None,所以可以先检查是否有结果(不需要运行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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM