[英]How do I identify individual characters in a string
我正在嘗試創建一個函數,如果輸入的字符串中沒有數字則返回'true',如果其中有任何數字則返回'false'
例如:
'Ohio'= true,'agent 007'= false
到目前為止我已經嘗試過了
numbers = '0123456789'
Lowercase = 'abcdefghijklmnopqrstuvwxyz'
Uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def alphabet_only(a_string):
if a_string[:] not in numbers:
print('true')
else:
print('false')
問題是我無法弄清楚如何在字符串中單獨識別單個數字字符以將其標記為false。
到目前為止它將回歸
6 =假(好)
54 =真(壞)
pie = true(好)
pie18 =真(壞)
使用標准庫中的isalpha()
>>> test='test1'
>>> test.isalpha()
>>> False
您是否考慮過使用正則表達式?
import re
def has_no_numbers(string):
return re.search('[0-9]', string) is None
為了測試字符串是否包含數字,您有多種選擇
set(string.digits).intersection(st)) < 9
len(st.translate(None, string.digits)) < len(st)
但以上所有都是一種矯枉過正,因為你只需要確保其中一個字符是一個數字。 哪個數字或出現次數無關緊要。 在這種情況下使用str.isdigit檢查並使用any
短路布爾評估應該是正確的方法。
>>> def has_numbers(st):
return any(e.isdigit() for e in st)
>>> has_numbers('agent 007')
True
>>> has_numbers('agent')
False
使用集合交集:
digits = set("0123456789")
def alphabet_only(a_string):
if set(a_string) & digits:
print ("false")
else:
print ("true")
我想你可以這樣做:
import string
def alphabet_only(a_string):
if all(v not in string.digits for v in a_string):
print('true')
else:
print('false')
alphabet_only("6") # false
alphabet_only("54") # false
alphabet_only("pie") # true
alphabet_only("pie18") # false
alphabet_only("Ohio") # true
alphabet_only("agent 007") # false
實際上比以前提出的方法更簡單:
如果你這樣做:
list(string123)
你會得到這樣的東西
['s','t','r','i','n','g','1','2','3']
現在您需要做的就是設置一個簡單的for循環來檢查每個條目(未測試):
some_list = list(string123)
for i in range(len(some_list)):
if some_list[i] == 1 or some_list[i] == 2 or ..... or some_list[i] == 9:
print 'False'
else:
print 'True'
或者如其他用戶所指出的,可以針對以下內容更改if條件:
0 <= some_list[i] <= 9:
從而使代碼更緊湊。
這是一個更漂亮的代碼版本:
for c in 'string123':
0 <= c <= 9:
print 'False'
else:
print 'True'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.