使用pythonre删除数字后的单元
通过使用python正则表达式,如何删除数字后的单位字 e、 g使用pythonre删除数字后的单元,python,regex,Python,Regex,通过使用python正则表达式,如何删除数字后的单位字 e、 g 下面是一种方法,从units列表以编程方式构造正则表达式: import re units = ['in', 'ft'] tests = ['12in desk', '12 in desk', 'abc 20 ft long', ] expecteds = ['12 desk', '12 desk', 'abc 20 long', ] regexp = re.compile(r'(\d+)\s*(%s)\b' % '|'.jo
下面是一种方法,从
units
列表以编程方式构造正则表达式:
import re
units = ['in', 'ft']
tests = ['12in desk', '12 in desk', 'abc 20 ft long', ]
expecteds = ['12 desk', '12 desk', 'abc 20 long', ]
regexp = re.compile(r'(\d+)\s*(%s)\b' % '|'.join(units))
for test, expected in zip(tests, expecteds):
actual = re.sub(regexp, r'\1', test)
assert actual == expected
下面是一种方法,从
units
列表以编程方式构造正则表达式:
import re
units = ['in', 'ft']
tests = ['12in desk', '12 in desk', 'abc 20 ft long', ]
expecteds = ['12 desk', '12 desk', 'abc 20 long', ]
regexp = re.compile(r'(\d+)\s*(%s)\b' % '|'.join(units))
for test, expected in zip(tests, expecteds):
actual = re.sub(regexp, r'\1', test)
assert actual == expected
这是另一种方式,类似于@Rob的答案,只是有点不同。我的方法的不同之处在于,我没有使用
re.sub
方法,而是简单地捕获所有相关的组,然后将字符串放回一起,省略了包含有问题文本的第三组
import re
units = '|'.join(['in', 'ft'])
vals = ['12in desk', '12 in desk', 'abc 20 ft long']
pattern = r'([^\d]*)(\d+)\s?({})(.*)'.format(units)
regex = re.compile(pattern)
for val in vals:
match = regex.match(val)
out = ''.join(match.group(1,2,4))
print("{} becomes in {}".format(val, out))
这是另一种方式,类似于@Rob的答案,只是有点不同。我的方法的不同之处在于,我没有使用
re.sub
方法,而是简单地捕获所有相关的组,然后将字符串放回一起,省略了包含有问题文本的第三组
import re
units = '|'.join(['in', 'ft'])
vals = ['12in desk', '12 in desk', 'abc 20 ft long']
pattern = r'([^\d]*)(\d+)\s?({})(.*)'.format(units)
regex = re.compile(pattern)
for val in vals:
match = regex.match(val)
out = ''.join(match.group(1,2,4))
print("{} becomes in {}".format(val, out))
使用下面的代码,您可以在编号后卸下装置。这是@wesanyer的替代品
import re
units = '|'.join(['in','ft'])
pattern = "[0-9]+"+".*"+units
a = "12in desk"
match = re.search(pattern, "12in desk")
if match:
a.replace(match.group(1), "")
使用下面的代码,您可以在编号后卸下装置。这是@wesanyer的替代品
import re
units = '|'.join(['in','ft'])
pattern = "[0-9]+"+".*"+units
a = "12in desk"
match = re.search(pattern, "12in desk")
if match:
a.replace(match.group(1), "")
通过使用python正则表达式-请共享它。通过使用python正则表达式-请共享它。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的附加上下文可以提高其长期价值。虽然此代码可能会回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。