检查字符串中的空格(python)

时间:2014-11-18 05:27:46

标签: python

为什么我总是得到YES!!!?如果字符串包含空格(换行符,点击,空格)

,我需要返回NO!!!
user = "B B"

if user.isspace():
    print("NO!!!")
else:
    print("YES!!!")

9 个答案:

答案 0 :(得分:6)

您使用的是isspace

<强> str.isspace()

  

如果字符串中只有空格字符并且至少有一个字符,则返回true,否则返回false。

     

对于8位字符串,此方法取决于语言环境。

答案 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