Python:如何将一个字符串拆分为多个字符串

Amy*_*Amy 3 python string split

给定一个字符串:

str = "苹果和橙子或香蕉"

我想用“AND”或“OR”分割它。预期的结果是

['苹果','橙色','香蕉']

python有什么简单的方法可以做到吗?

谢谢!

Kas*_*mvd 6

您可以使用正则表达式根据 len 1 或更多大写字母的任意组合进行拆分:

>>> tr = "apple AND orange OR banana"
>>> re.split(r'[A-Z]+',tr)
['apple ', ' orange ', ' banana']
Run Code Online (Sandbox Code Playgroud)

但是如果你只想用ANDor分割OR

>>> re.split(r'AND|OR',tr)
['apple ', ' orange ', ' banana']
Run Code Online (Sandbox Code Playgroud)

如果您确定您的句子包含不同的单词,则可以删除空格:

>>> re.split(r'[A-Z ]+',tr)
['apple', 'orange', 'banana']
Run Code Online (Sandbox Code Playgroud)

如果您在使用 split 的字符串的前导或尾随中有一个ANDorOR将在 result 中创建一个空字符串,为了摆脱它,您可以遍历拆分列表并检查项目的验证,但作为一种更优雅的方式,您可以使用re.findall:与r'[^A-Z ]+'作为其图案:

>>> tr = "AND apple AND orangeOR banana"
>>> re.split(r'\s?(?:AND|OR)\s?',tr)
['', 'apple', 'orange', 'banana']
>>> re.split(r'[A-Z ]+',tr)
['', 'apple', 'orange', 'banana']
>>> [i for i in re.split(r'[A-Z ]+',tr) if i]
['apple', 'orange', 'banana']
>>> re.findall(r'[^A-Z ]+',tr)
['apple', 'orange', 'banana']
Run Code Online (Sandbox Code Playgroud)