【发布时间】:2021-10-28 22:44:42
【问题描述】:
给定一个列表如下:
l = ['hydrogenated benzene (purity: 99.9 density (g/cm3), produced in ZB): SD',
'Car board price (tax included): JT Port',
'Ex-factory price (low-end price): Triethanolamine (85% commercial grade): North'
]
我想得到预期的结果如下:
['hydrogenated benzene: SD', 'Car board price: JT Port', 'Ex-factory price: Triethanolamine: North']
代码如下:
def remove_extra(content):
pat1 = '[\s]' # remove space
pat2 = '\(.*\)' # remove content within parentheses
combined_pat = r'|'.join((pat2, pat3))
return re.sub(combined_pat, '', str(content))
[remove_extra(item) for item in l]
它生成:
['hydrogenated benzene : SD',
'Car board price : JT Port',
'Ex-factory price : North']
您可能会注意到,结果'Ex-factory price : North' 的最后一个元素与预期的不一样,我怎么能达到我所需要的?谢谢。
【问题讨论】:
-
可以使用
a = [re.sub(r'\((?:[^)(]|\([^)(]*\))*\)', '', str(item)) for item in l]吗?:之前是否需要删除空格? -
从结果中看起来很有意义。你的意思是使用
'\((?:[^)(]|\([^)(]*\))*\)'作为pat1和[\s]作为pat2? -
我测试了
[\s]并删除了所有空格,看来这不是您需要的。
标签: python-3.x pandas re