문자열에 알파벳 문자가 포함되어 있는지 확인하려면 어떻게 해야 합니까?
문자열에 알파벳 문자가 포함되어 있는지 확인하는 가장 좋은 순수 파이썬 구현은 무엇입니까?
string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555
어디에string_1
돌아올 것입니다False
알파벳 문자가 없기 때문에 그리고.string_2
돌아올 것입니다True
편지가 있어서요
정규식은 빠른 접근 방식이어야 합니다.
re.search('[a-zA-Z]', the_string)
어때요?
>>> string_1 = "(555).555-5555"
>>> string_2 = "(555) 555 - 5555 ext. 5555"
>>> any(c.isalpha() for c in string_1)
False
>>> any(c.isalpha() for c in string_2)
True
사용할 수 있습니다.islower()
문자열에 일부 소문자(다른 문자 제외)가 포함되어 있는지 확인합니다.or
와 함께isupper()
또한 일부 대문자가 포함되어 있는지 확인합니다.
아래: 문자열의 문자: test에서 true가 됩니다.
>>> z = "(555) 555 - 5555 ext. 5555"
>>> z.isupper() or z.islower()
True
below: 문자열에 문자가 없음: 테스트 결과가 false입니다.
>>> z= "(555).555-5555"
>>> z.isupper() or z.islower()
False
>>>
와 혼동하지 말 것isalpha()
어느 쪽이 돌아옵니까?True
모든 문자가 문자인 경우에만 해당됩니다. 원하는 문자가 아닙니다.
바름의 답변은 제 답변을 잘 마무리하지 못합니다. 제 답변은 혼합된 사건을 잘 처리하지 못합니다.
저는 @jean-françois-fabre가 제공한 답변이 마음에 들었지만, 그것은 불완전합니다.
그의 접근 방식은 텍스트에 순수하게 소문자 또는 대문자가 포함된 경우에만 작동합니다.
>>> text = "(555).555-5555 extA. 5555"
>>> text.islower()
False
>>> text.isupper()
False
더 나은 방법은 먼저 문자열을 대문자 또는 소문자로 표시한 다음 확인하는 것입니다.
>>> string1 = "(555).555-5555 extA. 5555"
>>> string2 = '555 (234) - 123.32 21'
>>> string1.upper().isupper()
True
>>> string2.upper().isupper()
False
다음과 같은 정규식을 사용할 수 있습니다.
import re
print re.search('[a-zA-Z]+',string)
저는 주어진 문자열에 알파벳이 포함되어 있는지 확인하기 위해 위의 각 방법을 테스트했고 표준 컴퓨터에서 문자열당 평균 처리 시간을 알아냈습니다.
~250ns(의 경우)
import re
에 대해 ~3µs
re.search('[a-zA-Z]', string)
에 대해 ~6µs
any(c.isalpha() for c in string)
~850ns(의 경우)
string.upper().isupper()
주장된 것과 반대로 가져오기는 거의 시간이 걸리지 않으며, re를 사용하여 검색하는 것은 상대적으로 작은 문자열에 대해서도 alpha()를 반복하는 것에 비해 절반 정도의 시간이 걸립니다.
따라서 더 큰 문자열과 더 큰 카운트의 경우 훨씬 더 효율적입니다.
그러나 문자열을 대소문자로 변환하고 검사 대소문자(즉, 상위().isupper() 또는 하위().islower() 중 하나)를 선택하면 여기서 승리합니다.모든 루프에서 re.search()보다 훨씬 빠르며 추가 가져오기도 필요하지 않습니다.
추가로 이 작업을 수행할 수도 있습니다.
import re
string='24234ww'
val = re.search('[a-zA-Z]+',string)
val[0].isalpha() # returns True if the variable is an alphabet
print(val[0]) # this will print the first instance of the matching value
또한 변수 val이 None을 반환하는 경우에는 None을 반환합니다.즉, 검색에서 일치하는 항목을 찾지 못했습니다.
언급URL : https://stackoverflow.com/questions/9072844/how-can-i-check-if-a-string-contains-any-letters-from-the-alphabet
'programing' 카테고리의 다른 글
PHP의 추상 상수 - 자식 클래스가 상수를 정의하도록 강제합니다. (0) | 2023.08.17 |
---|---|
일부 SQLite3 테이블의 데이터를 덤프하려면 어떻게 해야 합니까? (0) | 2023.08.17 |
모두 비활성화하는 방법모두 비활성화하는 방법jQuery와 함께 폼 안에?jQuery와 함께 폼 안에? (0) | 2023.08.17 |
cURL에서 HTTP 헤더가 있는 API 키 전달 (0) | 2023.08.17 |
부트스트랩 입력 포커스 파란색 표시 변경 (0) | 2023.08.12 |