我试图从列中提取项目的物理尺寸"Description">
创建一个新的列。尺寸通常以这种格式(120x80x100)出现在长描述的中间,如:
Lorem ipsum dolor sit amet, consectetur adipiscing elit 120x80x100 ed do eiusmod tempor...
但有时之间有空格:
120 x 80 x 100
或者没有高度:
120x80
120 x 80
帮忙吗?提前感谢
您可以使用正则表达式,d+s*xs*d+(?:s*xs*d+)?
解释:
d+
:一个或多个数字s*
: 0个或多个空白字符x
: Literal,x
(?:s*xs*d+)?
:可选非捕获组
如果您希望数字为一到三位数,则将d+
替换为d{1,3}
,如正则表达式d{1,3}s*xs*d{1,3}(?:s*xs*d{1,3})?
所示。
如果你的代码要求你使用一个组,按照下面的方法去做:
(d{1,3}s*xs*d{1,3}(?:s*xs*d{1,3})?)
我们可以尝试使用re.findall
方法和覆盖所有可能维度格式的regex模式:
inp = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit 1. 20x80x100 ed do 120 x 80 x 100 eiusmod 120x80 tempor...'
dims = re.findall(r'd+(?:s*xs*d+){1,2}', inp)
print(dims) # ['120x80x100', '120 x 80 x 100', '120x80']
应该这样做:
d+(s?xs?d+){1,2}