【问题标题】:Is there any 'native' method that can give information about a character in the string?是否有任何“本机”方法可以提供有关字符串中字符的信息?
【发布时间】:2019-09-22 00:37:19
【问题描述】:

我想检查字符串中的字符是数字、空格、大写/小写字符还是特殊字符“.'*^?...”

我想出了不是很巧妙的解决方案,而且如果不在 else 语句中添加额外的行,它就无法检查特殊字符。

def checker(str1):
if str1.isspace() is True:
    print('it\'s a space')
if str1.isupper() is True:
    print('it\'s a letter and it\'s upper')
if str1.islower() is True:
    print('it\'s a letter and it\'s lower')
if str1.isdigit() is True:
    print('it\'s a digit')
if str1.isascii() is True:
    print('it\'s a special chracter')

string_letter = 'A'

checker(string_letter)

此代码有效...如果我为特殊字符创建一些额外的子句,因为现在它只是说空格是一个特殊字符...发生这种情况是因为.isascii() 对于特殊字符来说太宽泛了。

是否有任何我想念的本机方法可以更优雅地完成该功能?又名给出字符串中某个字符的信息?

我对python很陌生,所以很抱歉,也许我无法找到本地解决方案,因为我还不太熟悉术语。

【问题讨论】:

  • 而不是if x is True 只需使用if x
  • 感谢您的回复!我不知道你可以跳过澄清,它仍然可以那样工作......很好的提示,谢谢!

标签: python-3.x string character


【解决方案1】:

使用elif 并将特殊字符检查器放在最后。

def checker(str1):
    if str1.isspace():
        print('it\'s a space')
    elif str1.isupper():
        print('it\'s a letter and it\'s upper')
    elif str1.islower():
        print('it\'s a letter and it\'s lower')
    elif str1.isdigit():
        print('it\'s a digit')
    elif str1.isascii():
        print('it\'s a special chracter')

string_letter = '&'

checker(string_letter)

那么,

it's a special chracter

【讨论】:

  • 非常感谢您的回复,所以我想没有这样的内置功能?
  • 是的,AFAIK 无法仅识别特殊字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2020-12-20
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
相关资源
最近更新 更多