답변:
당신은 사용할 수 있습니다 any
로, 기능을 str.isdigit
다음과 같이 기능
>>> def hasNumbers(inputString):
... return any(char.isdigit() for char in inputString)
...
>>> hasNumbers("I own 1 dog")
True
>>> hasNumbers("I own no dog")
False
또는 다음과 같이 정규식을 사용할 수 있습니다
>>> import re
>>> def hasNumbers(inputString):
... return bool(re.search(r'\d', inputString))
...
>>> hasNumbers("I own 1 dog")
True
>>> hasNumbers("I own no dog")
False
r'-?\d+'
\d
는 0
~ 범위의 한 자릿수 만 일치 합니다 9
.
any
및 의 조합을 사용할 수 있습니다 str.isdigit
.
def num_there(s):
return any(i.isdigit() for i in s)
True
문자열에 숫자가 있으면 함수가 반환 하고 그렇지 않으면를 반환 False
합니다.
데모:
>>> king = 'I shall have 3 cakes'
>>> num_there(king)
True
>>> servant = 'I do not have any cakes'
>>> num_there(servant)
False
any
발전기 표현 을 받아들이는 것을 깨달았습니다 .
사용하다
str.isalpha ()
참조 : https://docs.python.org/2/library/stdtypes.html#str.isalpha
문자열의 모든 문자가 알파벳이고 하나 이상의 문자가 있으면 true를, 그렇지 않으면 false를 반환합니다.
'_'.isalpha()
False).
https://docs.python.org/2/library/re.html
정규식을 더 잘 사용해야합니다. 훨씬 빠릅니다.
import re
def f1(string):
return any(i.isdigit() for i in string)
def f2(string):
return re.search('\d', string)
# if you compile the regex string first, it's even faster
RE_D = re.compile('\d')
def f3(string):
return RE_D.search(string)
# Output from iPython
# In [18]: %timeit f1('assdfgag123')
# 1000000 loops, best of 3: 1.18 µs per loop
# In [19]: %timeit f2('assdfgag123')
# 1000000 loops, best of 3: 923 ns per loop
# In [20]: %timeit f3('assdfgag123')
# 1000000 loops, best of 3: 384 ns per loop
None
문자열의 모든 문자에 isdigit () 함수를 적용 할 수 있습니다. 또는 정규식을 사용할 수 있습니다.
또한 파이썬에서 문자열에서 하나의 숫자를 어떻게 찾습니까? 숫자를 반환하는 매우 적절한 방법으로. 아래의 해결책은 그 질문에 대한 답변입니다.
number = re.search(r'\d+', yourString).group()
또는
number = filter(str.isdigit, yourString)
자세한 내용은 정규식 문서를 참조하십시오 : http://docs.python.org/2/library/re.html
편집 : 이것은 부울 값이 아닌 실제 숫자를 반환하므로 위의 답변이 귀하의 경우에 더 정확합니다
첫 번째 방법은 첫 번째 숫자와 그 이후의 연속 숫자를 반환합니다. 따라서 1.56은 1로 반환됩니다. 10,000은 10으로 반환됩니다. 0207-100-1000은 0207로 반환됩니다.
두 번째 방법은 작동하지 않습니다.
모든 숫자, 점 및 쉼표를 추출하고 비 연속 숫자를 잃지 않으려면 다음을 사용하십시오.
re.sub('[^\d.,]' , '', yourString)
NLTK 방법을 사용할 수 있습니다.
텍스트에서 '1'과 'One'을 모두 찾습니다.
import nltk
def existence_of_numeric_data(text):
text=nltk.word_tokenize(text)
pos = nltk.pos_tag(text)
count = 0
for i in range(len(pos)):
word , pos_tag = pos[i]
if pos_tag == 'CD':
return True
return False
existence_of_numeric_data('We are going out. Just five you and me.')
다음과 같이이를 수행 할 수 있습니다.
if a_string.isdigit():
do_this()
else:
do_that()
https://docs.python.org/2/library/stdtypes.html#str.isdigit
사용 .isdigit()
도하는 것은 의미 예외 처리에 의존하지 않아도 (지능형리스트 안에 수 없습니다 제외 / 시도)를 사용 목록 이해를 필요로하는 곳에 경우 (시도 / 제외).
count와 함께 range를 사용하여 범위와 비교하여 문자열에 숫자가 나타나는 횟수를 확인할 수 있습니다.
def count_digit(a):
sum = 0
for i in range(10):
sum += a.count(str(i))
return sum
ans = count_digit("apple3rh5")
print(ans)
#This print 2
나는 아무도의 조합 했나요 없다는 것을 놀랍 any
과 map
:
def contains_digit(s):
isdigit = str.isdigit
return any(map(isdigit,s))
파이썬 3에서는 아마도 가장 빠릅니다 (아마도 정규 표현식 제외). 루프가 포함되어 있지 않기 때문에 (그리고 별칭을 지정하면 함수가 그것을 찾지 않습니다 str
).
파이썬 2에서 그것을 사용하지 마십시오 map
리턴한다 list
, 휴식any
단락
이건 어때?
import string
def containsNumber(line):
res = False
try:
for val in line.split():
if (float(val.strip(string.punctuation))):
res = True
break
except ValueError:
pass
return res
containsNumber('234.12 a22') # returns True
containsNumber('234.12L a22') # returns False
containsNumber('234.12, a22') # returns True
해결하는 간단한 방법은 다음과 같습니다.
s = '1dfss3sw235fsf7s'
count = 0
temp = list(s)
for item in temp:
if(item.isdigit()):
count = count + 1
else:
pass
print count
import string
import random
n = 10
p = ''
while (string.ascii_uppercase not in p) and (string.ascii_lowercase not in p) and (string.digits not in p):
for _ in range(n):
state = random.randint(0, 2)
if state == 0:
p = p + chr(random.randint(97, 122))
elif state == 1:
p = p + chr(random.randint(65, 90))
else:
p = p + str(random.randint(0, 9))
break
print(p)
이 코드는 적어도 대문자, 소문자 및 숫자를 포함하는 크기 n의 시퀀스를 생성합니다. while 루프를 사용하여이 이벤트를 보장했습니다.
any
그리고 ord
다음과 같이 목적을 제공하기 위해 결합 될 수있다.
>>> def hasDigits(s):
... return any( 48 <= ord(char) <= 57 for char in s)
...
>>> hasDigits('as1')
True
>>> hasDigits('as')
False
>>> hasDigits('as9')
True
>>> hasDigits('as_')
False
>>> hasDigits('1as')
True
>>>
이 구현에 대한 몇 가지 사항.
any
C 언어에서 단락 식처럼 작동하고 문자열 'a1bbbbbbc' 'b'와 'c'가 비교되지 않은 경우 결정될 수있는 즉시 결과를 반환하기 때문에 더 좋습니다.
ord
'0'과 '5'또는 다른 범위 사이의 검사 번호와 같이 더 많은 유연성을 제공하기 때문에 더 좋습니다. 예를 들어, 숫자의 16 진 표현에 대한 유효성 검증기를 작성하려면 문자열에 'A'- 'F'범위의 알파벳 만 사용하십시오.