python 正则表达式添加 space 只要数字与非数字相邻
python regex add space whenever a number is adjacent to a non-number
我试图将 Python 字符串中的非数字与数字分开。数字可以包含浮点数。
例子
Original String Desired String
'4x5x6' '4 x 5 x 6'
'7.2volt' '7.2 volt'
'60BTU' '60 BTU'
'20v' '20 v'
'4*5' '4 * 5'
'24in' '24 in'
这是一个很好的线程,介绍如何在 PHP 中实现这一点:
Regex: Add space if letter is adjacent to a number
我想在 Python 中操作上面的字符串。
以下代码在第一个示例中有效,但在其他示例中无效:
new_element = []
result = [re.split(r'(\d+)', s) for s in (unit)]
for elements in result:
for element in elements:
if element != '':
new_element.append(element)
new_element = ' '.join(new_element)
break
简单!只需替换它并使用 Regex 变量即可。不要忘记去除空格。
请试试这个代码:
import re
the_str = "4x5x6"
print re.sub(r"([0-9]+(\.[0-9]+)?)",r" ", the_str).strip() // refers to first variable in ()
我像你一样使用了 split,但是像这样修改了它:
>>> tcs = ['123', 'abc', '4x5x6', '7.2volt', '60BTU', '20v', '4*5', '24in', 'google.com-1.2', '1.2.3']
>>> pattern = r'(-?[0-9]+\.?[0-9]*)'
>>> for test in tcs: print(repr(test), repr(' '.join(segment for segment in re.split(pattern, test) if segment)))
'123' '123'
'abc' 'abc'
'4x5x6' '4 x 5 x 6'
'7.2volt' '7.2 volt'
'60BTU' '60 BTU'
'20v' '20 v'
'4*5' '4 * 5'
'24in' '24 in'
'google.com-1.2' 'google.com -1.2'
'1.2.3' '1.2 . 3'
似乎有预期的行为。
请注意,在加入字符串之前,您必须从数组的 beginning/end 中删除空字符串。有关解释,请参阅 this question。
我试图将 Python 字符串中的非数字与数字分开。数字可以包含浮点数。
例子
Original String Desired String
'4x5x6' '4 x 5 x 6'
'7.2volt' '7.2 volt'
'60BTU' '60 BTU'
'20v' '20 v'
'4*5' '4 * 5'
'24in' '24 in'
这是一个很好的线程,介绍如何在 PHP 中实现这一点:
Regex: Add space if letter is adjacent to a number
我想在 Python 中操作上面的字符串。
以下代码在第一个示例中有效,但在其他示例中无效:
new_element = []
result = [re.split(r'(\d+)', s) for s in (unit)]
for elements in result:
for element in elements:
if element != '':
new_element.append(element)
new_element = ' '.join(new_element)
break
简单!只需替换它并使用 Regex 变量即可。不要忘记去除空格。 请试试这个代码:
import re
the_str = "4x5x6"
print re.sub(r"([0-9]+(\.[0-9]+)?)",r" ", the_str).strip() // refers to first variable in ()
我像你一样使用了 split,但是像这样修改了它:
>>> tcs = ['123', 'abc', '4x5x6', '7.2volt', '60BTU', '20v', '4*5', '24in', 'google.com-1.2', '1.2.3']
>>> pattern = r'(-?[0-9]+\.?[0-9]*)'
>>> for test in tcs: print(repr(test), repr(' '.join(segment for segment in re.split(pattern, test) if segment)))
'123' '123'
'abc' 'abc'
'4x5x6' '4 x 5 x 6'
'7.2volt' '7.2 volt'
'60BTU' '60 BTU'
'20v' '20 v'
'4*5' '4 * 5'
'24in' '24 in'
'google.com-1.2' 'google.com -1.2'
'1.2.3' '1.2 . 3'
似乎有预期的行为。
请注意,在加入字符串之前,您必须从数组的 beginning/end 中删除空字符串。有关解释,请参阅 this question。