[英]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
由于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.