python检查字符串是否包含特定格式的“单词”
我正在尝试检查字符串是否包含具有特定格式的单词 - 3numbers+ x+ 3numbers。我正在使用 Pandas 数据框,数据如下所示:
| ad name |
| puma sneaker ad banner 320x480 |
| puma mobile 320x240 video ad |
320x480 和 320x240 表示广告横幅的大小,我想创建一个仅包含大小的新列
| ad name | banner size |
| puma sneaker ad banner 320x480 | 320x480 |
| puma mobile 320x240 video ad | 320x240 |
例如,在句子“puma 运动鞋广告横幅320x480 ”中,我希望能够打印出“ 320x480 ”,在句子“puma mobile 320x240视频广告”中,我希望能够打印出“ 320x240 ”。我不熟悉 Regex,甚至不知道这是否可以实现。为了蛮力,我可以做一个 if-else 语句:
if "320x240" in somestring:
print "320x240"
elif "320x480" in somestring:
print "320x480"
...
但我不想强制使用它,我想找到另一种方法来使代码更干净。有什么建议吗?
回答
对于熊猫:
df['banner size'] = df['ad name'].str.extract(r'(d{3}xd{3})')
如果您在一行中有多个横幅尺寸,请str.findall改用。
import re
if re.search(r'd{3}xd{3}', somestring):
output = re.findall(r'd{3}xd{3}', somestring)
print(', '.join(output))
else:
print('Nothing find')