检查 Python 中多次出现字符的字符串
Check string for multiple occurrence of character in Python
如何检查字符串是否仅由(多个)破折号组成? '-'
、'--'
、'---'
等需要 True
,但例如'-3'
、'foo--'
等需要为False
。最好的检查方法是什么?
方法有很多种,但我认为最直接的一种是:
all(i == '-' for i in '----')
您可以使用内置函数all
:
>>> a= '---'
>>> all(i == '-' for i in a)
True
>>> b="----c"
>>> all(i == '-' for i in b)
False
>>> 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))
一种方法是使用集合。
>>> 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
最明显的方法是:
- 字符串是否等于全是破折号的字符串:
s == '-' * len(s)
;
- 字符串是否包含与其长度一样多的破折号:
s.count('-') == len(s)
;
- 字符串的
set
是否只是破折号:set(s) == set('-')
;
- 字符串是否仅匹配破折号的正则表达式:
re.match(r'^-+$', s)
;和
- 是
all
字符串破折号中的字符:all(c == '-' for c in s)
。
毫无疑问还有其他选择;根据 "best",您必须定义您的标准。另外,空字符串 ""
应该产生什么结果?其中的所有无字符都是破折号...
如何检查字符串是否仅由(多个)破折号组成? '-'
、'--'
、'---'
等需要 True
,但例如'-3'
、'foo--'
等需要为False
。最好的检查方法是什么?
方法有很多种,但我认为最直接的一种是:
all(i == '-' for i in '----')
您可以使用内置函数all
:
>>> a= '---'
>>> all(i == '-' for i in a)
True
>>> b="----c"
>>> all(i == '-' for i in b)
False
>>> 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))
一种方法是使用集合。
>>> 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
最明显的方法是:
- 字符串是否等于全是破折号的字符串:
s == '-' * len(s)
; - 字符串是否包含与其长度一样多的破折号:
s.count('-') == len(s)
; - 字符串的
set
是否只是破折号:set(s) == set('-')
; - 字符串是否仅匹配破折号的正则表达式:
re.match(r'^-+$', s)
;和 - 是
all
字符串破折号中的字符:all(c == '-' for c in s)
。
毫无疑问还有其他选择;根据 "best",您必须定义您的标准。另外,空字符串 ""
应该产生什么结果?其中的所有无字符都是破折号...