Python 如何将字符串分开两次?

Python 如何将字符串分开两次?,python,Python,我想同时删除分号、括号和破折号。如何使用split()? 例如,将(发货id[s]-ef234;发送方[s]-Taiwan Electronics Co)转换为[“发货id[s],“ef234”,“发送方[s],“Taiwan Electronics Co]”如果项目中已经包含类似“JB HI-FI”的破折号,该怎么办。如何使用它?使用regex实现这一点非常简单 import re pattern = r'[-|;]' string = 'shipment_id[s]-ef234;sende

我想同时删除分号、括号和破折号。如何使用
split()

例如,将(发货id[s]-ef234;发送方[s]-Taiwan Electronics Co)转换为
[“发货id[s],“ef234”,“发送方[s],“Taiwan Electronics Co]”
如果项目中已经包含类似“JB HI-FI”的破折号,该怎么办。如何使用它?

使用
regex
实现这一点非常简单

import re
pattern = r'[-|;]'

string = 'shipment_id[s]-ef234;sender[s]-Taiwan Electronics Co'

re.split(pattern, string)
#['shipment_id[s]', 'ef234', 'sender[s]', 'Taiwan Electronics Co']
如果包含
()
,我们可以简单地将它们添加到模式中,并通过列表理解将其传递给只包含
True
的值

string = '(shipment_id[s]-ef234;sender[s]-Taiwan Electronics Co)'
pattern = r'[-|;|\(|\)]'
print([match for match in re.split(pattern, string) if match])

#['shipment_id[s]', 'ef234', 'sender[s]', 'Taiwan Electronics Co']

如果按照问题的要求保留开头和结尾的
,您将有额外的工作,因为它将创建空字符串。如果这确实是一个很大的问题,简单的列表理解可以删除空字符串。或者在进行
拆分之前,只需使用
strip
删除括号即可。添加到
()
@MarkI想知道
re.findall(r'[^;()-]+',s)
或类似项是否会更简单。如果包含“JB HI-FI”等破折号的项会怎样。怎么办?