检查Python中多次出现字符的字符串

时间:2015-01-06 09:04:35

标签: python string parsing

如何检查字符串是否只包含(多个)破折号? '-''--''---'等需要True,但是'-3''foo--'等需要False。检查它的最佳方法是什么?

5 个答案:

答案 0 :(得分:3)

有很多方法,但我认为最直接的方法是:

all(i == '-' for i in '----')

答案 1 :(得分:3)

您可以使用内置函数all

>>> a= '---'
>>> all(i == '-' for i in a)
True
>>> b="----c"
>>> all(i == '-' for i in b)
False

答案 2 :(得分:3)

最明显的方法是:

  • 如果字符串全部是短划线,那么字符串是否等于字符串:s == '-' * len(s);
  • 字符串是否包含与其长度一样多的破折号:s.count('-') == len(s);
  • 字符串的set只是短划线:set(s) == set('-');
  • 字符串是否仅与短划线匹配正则表达式:re.match(r'^-+$', s);和
  • all字符串中的字符是否为all(c == '-' for c in s)""

毫无疑问还有其他选择;就“最佳”而言,您必须定义您的标准。此外,空字符串{{1}}应该导致什么?其中没有任何字符都是破折号......

答案 3 :(得分:2)

一种方法是使用一套。

>>> a = '---'
>>> len(set(a)) == 1 and a[0] == '-'
True
>>> a = '-x-'
>>> len(set(a)) == 1 and a[0] == '-'
False

如果set的长度为1,则字符串中只有一个不同的字符。现在我们只需检查此字符是否为'-'

更简单的方法是比较集合。

>>> set('----') == set('-')
True
>>> set('--x') == set('-')
False

答案 4 :(得分:1)

Using re.match function

>>> import re
>>> def check(str):
...     if re.match(r"-+$", str):
...             return True
...     return False
...
>>> check ("--")
True
>>> check ("foo--")
False

更短的

>>> def check(str):
...     return bool ( re.match(r"-+$", str))