【问题标题】:How to split a string based on either a colon or a hyphen? [duplicate]如何根据冒号或连字符拆分字符串? [复制]
【发布时间】:2015-06-23 14:21:06
【问题描述】:
a = '4-6'
b= '7:10'

我已经试过了

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

我怎样才能编写既能接受任一字符串又能去掉冒号和连字符的代码?除了将同一个字符串拆分两次之外,还有更好的方法吗?

【问题讨论】:

  • 您是否要创建一个由“-”或“:”分隔的所有元素的列表。或者只是从字符串中删除这些字符并返回没有那个字符的新字符串?
  • 许多不同问题的重复。标记和Python: Split string with multiple delimiters

标签: python string split


【解决方案1】:

要拆分多个分隔符,您可以使用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] 将匹配所有大写字母。为避免这种行为,您可以将- 放在集合的开头,就像我在上面所做的那样。有关 Regex 语法的更多信息,请参阅文档中的 Regular Expression Syntax

【讨论】:

  • 你应该提到这叫做正则表达式。
  • 我觉得正则表达式对于初学者来说应该避免使用。
  • @MalikBrahimi - 为什么?在我看来,它们是每个程序员都应该了解的非常有用的工具。现在这并不是说应该在任何地方使用它们,但在这种情况下,正则表达式解决方案既好又简单。
【解决方案2】:

您可以一个接一个地替换,然后拆分整个字符串:

parts = your_string.replace('-', ':').split(':')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 2014-02-19
    • 2011-03-08
    • 1970-01-01
    • 2014-12-14
    • 2011-08-04
    • 2021-11-07
    • 2018-05-12
    相关资源
    最近更新 更多