programing

문자열의 문자가 문자인지 확인하려면 어떻게 해야 합니까?(파이썬)

sourcejob 2023. 7. 8. 10:50
반응형

문자열의 문자가 문자인지 확인하려면 어떻게 해야 합니까?(파이썬)

에 대해 알고 있습니다.islower그리고.isupper하지만 당신은 그 캐릭터가 편지인지 아닌지 확인할 수 있습니까?예:

>>> s = 'abcdefg'
>>> s2 = '123abcd'
>>> s3 = 'abcDEFG'
>>> s[0].islower()
True

>>> s2[0].islower()
False

>>> s3[0].islower()
True

하는 것 외에 그냥 캐릭터인지 물어볼 수 있는 방법이 있나요?.islower()또는.isupper()?

사용할 수 있습니다.

예:

s = 'a123b'

for char in s:
    print(char, char.isalpha())

출력:

a True
1 False
2 False
3 False
b True
str.isalpha()

문자열의 모든 문자가 영문자이고 하나 이상의 문자가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.알파벳 문자는 유니코드 문자 데이터베이스에서 "문자"로 정의된 문자입니다. 즉, 일반적인 범주 속성이 "Lm", "L", "L" 또는 "Ll" 중 하나인 문자입니다.이것은 유니코드 표준에 정의된 "알파벳" 속성과 다릅니다.

python2에서.x:

>>> s = u'a1中文'
>>> for char in s: print char, char.isalpha()
...
a True
1 False
中 True
文 True
>>> s = 'a1中文'
>>> for char in s: print char, char.isalpha()
...
a True
1 False
� False
� False
� False
� False
� False
� False
>>>

python3에서.x:

>>> s = 'a1中文'
>>> for char in s: print(char, char.isalpha())
...
a True
1 False
中 True
文 True
>>>

이 코드는 작동합니다.

>>> def is_alpha(word):
...     try:
...         return word.encode('ascii').isalpha()
...     except:
...         return False
...
>>> is_alpha('中国')
False
>>> is_alpha(u'中国')
False
>>>

>>> a = 'a'
>>> b = 'a'
>>> ord(a), ord(b)
(65345, 97)
>>> a.isalpha(), b.isalpha()
(True, True)
>>> is_alpha(a), is_alpha(b)
(False, True)
>>>

저는 기능과 기본 코드를 사용하여 이것을 할 수 있는 좋은 방법을 찾았습니다.이것은 문자열을 받아 대문자, 소문자 및 '기타'의 수를 세는 코드입니다.다른 것들은 공백, 구두점 또는 심지어 일본어와 중국어 문자로 분류됩니다.

def check(count):

    lowercase = 0
    uppercase = 0
    other = 0

    low = 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
    upper = 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'



    for n in count:
        if n in low:
            lowercase += 1
        elif n in upper:
            uppercase += 1
        else:
            other += 1

    print("There are " + str(lowercase) + " lowercase letters.")
    print("There are " + str(uppercase) + " uppercase letters.")
    print("There are " + str(other) + " other elements to this sentence.")

data = "abcdefg hi j 12345"

digits_count = 0
letters_count = 0
others_count = 0

for i in userinput:

    if i.isdigit():
        digits_count += 1 
    elif i.isalpha():
        letters_count += 1
    else:
        others_count += 1

print("Result:")        
print("Letters=", letters_count)
print("Digits=", digits_count)

출력:

Please Enter Letters with Numbers:
abcdefg hi j 12345
Result:
Letters = 10
Digits = 5

을 사용하여str.isalpha()당신은 그것이 편지인지 확인할 수 있습니다.

효과:

any(c.isalpha() for c in 'string')

a-z와 A-Z만 테스트하려면(즉, 유효한 것으로 中 제외) 다음을 수행할 수 있습니다.

def validate_word(word):
    """ Only allow a-z and A-Z only """
    valid_chars = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}
    if set(word).difference(valid_chars):
        print('there\'s at least 1 char that\'s not allowed')

시간은 안 잡았지만 세트를 사용하는 예쁜 것이 문자를 반복하는 것보다 빠를 것입니다.

효과:

word = str(input("Enter string:"))
notChar = 0
isChar = 0
for char in word:
    if not char.isalpha():
        notChar += 1
    else:
        isChar += 1
print(isChar, " were letters; ", notChar, " were not letters.")

언급URL : https://stackoverflow.com/questions/15558392/how-can-i-check-if-character-in-a-string-is-a-letter-python

반응형