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