如何基于冒号或破折号拆分字符串?

9
a = '4-6'
b= '7:10'

我已经尝试过了

a.split('-')
a.split(':')

我该如何编写代码,以便接受字符串并同时去除冒号和破折号?除了两次分割相同的字符串之外,是否有更好的方法?


你是想将所有元素用“-”或“:”隔开并制作一个列表吗?还是仅从字符串中删除这些字符并返回新字符串? - Malonge
许多不同的问题的副本。标记为Python:使用多个分隔符拆分字符串的一个。 - dawg
2个回答

17

要在多个分隔符上分割,您可以使用 re.split 和一个字符集:

import re
re.split('[-:]', a)

演示:

>>> import re
>>> a = '4-6'
>>> b = '7:10'
>>> re.split('[-:]', a)
['4', '6']
>>> re.split('[-:]', b)
['7', '10']

请注意,- 也用于指定字符集中的一系列字符。例如,[A-Z] 将匹配所有大写字母。为了避免这种行为,您可以将 - 放在集合的开头,就像我上面所做的那样。有关正则表达式语法的更多信息,请参见文档中的 正则表达式语法

你应该提到这被称为正则表达式。 - wvdz
1
我认为初学者在编程中应避免使用正则表达式。 - Malik Brahimi
2
@MalikBrahimi - 为什么?在我看来,它们是每个程序员都应该知道的非常有用的工具。这并不是说它们应该被用于所有地方,但在这种情况下,正则表达式解决方案既好又简单。 - user2555451

4
您可以将其中一个替换为另一个,然后拆分整个字符串:
parts = your_string.replace('-', ':').split(':')

这似乎是一个干净的黑客,但不知怎么的,我觉得我们漏掉了什么。 - milosmns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接