我正在做一个数据清理Jupyter笔记本与Pandas,我试图得到只是字符串的第一部分。但有一个陷阱。我可以很容易地删除表达式的其余部分,但有些字段实际上是有效的。因此,例如在列:
| 装运_供应商|
| - ------|
| 美国石油公司|
| Usps国际|
| 乌斯普西3|
| 乌斯普西丘|
| 使用者|
所以我想保持Usps和Usps的国际化。到目前为止,我使用了以下代码来处理简单的挑战:
orders.loc[:, 'SHIPMENT_PROVIDER'] = orders.loc[:, 'SHIPMENT_PROVIDER'].replace(to_replace='(?:Usps)([a-zA-Z0-9]+)$', value = 'Usps', regex = True)
但是这对于两个可替换的表达式是不起作用的。因此,带有一些随机字符的Usps,例如(Uspsxyz),应该替换为Usps,但是带有一些随机字符的Usps International,例如(Usps Internationalxyz),应该替换为Usps International。
2条答案
按热度按时间lnlaulya1#
其他人已经发布了正则表达式解决方案。那么非正则表达式解决方案呢?
y1aodyip2#
作为一种模式,您可以将捕获组用于第一部分,而不是将可选部分用于国际部分
在更换中,使用组1。
Regex demo
产出