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
因为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
我目前正在调查一个问题,我想替换字符串中的内容。
例如。我有以下字符串:
'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也可以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