簡體   English   中英

如何識別字符串中的單個字符

[英]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

為了測試字符串是否包含數字,您有多種選擇

  1. 使用正則表達式
  2. 使用set intersection set(string.digits).intersection(st)) < 9
  3. 使用str.translate 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM