为什么我总是得到YES!!!
?如果字符串包含空格(换行符,点击,空格)
NO!!!
user = "B B"
if user.isspace():
print("NO!!!")
else:
print("YES!!!")
答案 0 :(得分:6)
答案 1 :(得分:5)
def tt(w):
if ' ' in w:
print 'space'
else:
print 'no space'
>> tt('b ')
>> space
>> tt('b b')
>> space
>> tt('bb')
>> no space
我在火车上,抱歉没有解释..不能打字太多..
答案 2 :(得分:3)
这是一个简洁的方法,说明了列表推导的灵活性。它是一个帮助方法,它检查给定的字符串是否包含任何空格。
代码:
import string
def contains_whitespace(s):
return True in [c in s for c in string.whitespace]
示例:
>>> contains_whitespace("BB")
False
>>> contains_whitespace("B B")
True
当然,这可以扩展为检查任何字符串是否包含任何集合中的元素(而不仅仅是空格)。之前的解决方案是一个简洁而简短的解决方案,但是有些人可能认为它很难阅读并且比Pythonic更难以解决:
def contains_whitespace(s):
for c in s:
if c in string.whitespace:
return True
return False
答案 3 :(得分:1)
user = 'B B'
for x in user:
if x.isspace():
print("no")
else:print("yes")
你需要遍历它以检查所有元素,但上面的代码将无法正常工作。
使用辅助函数:
def space(text):
if ' ' in text:
return True
else: return False
演示:
>>> ' ' in 'B B'
True
>>> ' ' in 'BB'
False
使用in
检查
如果您想使用isspace
:
def space(text):
for x in text:
if x.isspace():
return True
return False
您也可以返回Desired字符串,而不是返回True或False:
>>> def space(text):
... if ' ' in text:
... return " yes Spaces"
... else: return " No Spaces"
...
>>> space('B B')
' yes Spaces'
>>> space('BB')
' No Spaces'
答案 4 :(得分:1)
由于您正在寻找的不仅仅是' '
,而是' ' in tgt
,您可以使用any:
for s in ('B ', 'B B', 'B\nB', 'BB'):
print repr(s), any(c.isspace() for c in s)
打印:
'B ' True
'B B' True
'B\nB' True
'BB' False
答案 5 :(得分:1)
您可以遍历字符串并检查空格。
<块引用>创建一个变量'is_there_whitespace'
<块引用>作为它的值,给它找到的 whitespce 的长度
<块引用>如果它的繁荣大于 0,你就会得到空白。
user = "B B"
is_there_whitespace = len([True for x in user if x.isspace()])
print(f"Is there white space? {is_there_whitespace>0}.")
print(f"Amount of white spaces found:{is_there_whitespace}")
> Is there white space? True.
> Amount of white space found:1.
答案 6 :(得分:0)
In [1]: a<br>
Out[1]: ' b\t\n'
In [2]: (' ' in a)or('\t' in a)or('\n' in a)<br>
Out[2]: True
答案 7 :(得分:0)
您可以使用str.split
检查字符串是否包含空格:
>>> ''.split()
[]
>>> ' '.split()
[]
>>> 'BB'.split()
['BB']
>>> ' B '.split()
['B']
>>> 'B B'.split()
['B', 'B']
所以你可以检查为
def hasspace(x):
if x:
s = x.split()
return len(s) == 1 and x == s[0]
return False
如果您只是想检查字符串中的整个单词(即,您不担心可能被x.strip()
删除的周围空格),则不再需要条件x == s[0]
。支票变为单一声明:
def hasspace(x):
return x and len(x.split()) == 1
现在你可以做到
if hasspace(user):
print("NO!!!")
else:
print("YES!!!")
答案 8 :(得分:0)
您的问题已经有了很好的答案。这是一种获取字符串中空格(或任何其他字符)总数的方法
>>> "I contain 3 spaces".count(" ")
3
>>> "Nospaces".count(" ")
0