我有这个简单的程序
quote = input("Enter your name : ")
start=0
space_index=quote.find(" ")
while space_index != -1:
print(quote[start:space_index])
我希望无论出现什么词都应该以 a到g 开头。 我尝试使用导入字符串类并使用他的ascii_lowercase()函数,但我仍然无法弄清楚如何检查单词是否以 a到g 的范围开始。
答案 0 :(得分:3)
像这样使用startswith()
:
quote = input("Enter your name : ")
allowed = 'abcdefg'
if any(quote.startswith(x) for x in allowed):
print('Success!')
或者,为了使其更加灵活,您可以使用:
import string
start = 'a'
end = 'g'
letters = string.ascii_lowercase
allowed = letters[letters.index(start):letters.index(end)+1] # abcdefg
quote = input("Enter your name : ")
while not any(quote.startswith(x) for x in allowed):
quote = input("The name is not valid! Please enter another name: ")
print('Success!')
答案 1 :(得分:2)
re.match:
re.match(r'[A-G, a-g]', yourstringhere)
答案 2 :(得分:1)
使用简单的re
模块:
import re
quote = input("Enter your name : ")
matches = [s for s in quote.split() if re.match('^[a-g,A-G]', s)]
您是否注意到此部分[a-g,A-G]
?
您可以将其更改为您想要的任何范围,例如[a-z]
仅为小写,[a-z,A-Z]
表示所有ascii字母,[0-9]
表示数字等...
答案 3 :(得分:1)
如果要测试特定范围的字母,可以使用chr()
函数获取范围的开头和结束字母的ascii值,并使用>>> def starts_in_range(string, char_range):
... start, end = char_range.split('-')
... ord_char_range = range(ord(start), ord(end) + 1)
... return ord(string[0]) in ord_char_range
>>> starts_in_range('globe', 'a-g')
True
>>> starts_in_range('butter', 'a-g')
True
>>> starts_in_range('nuts', 'a-g')
False
>>> starts_in_range('kimmy', 'a-g')
False
>>> starts_in_range('dumbo', 'a-g')
True
获取文本角色的价值ascii vaule:
videojs
答案 4 :(得分:0)
你在string.ascci中关注enaugh的地方,你可以这样做:
import string
a_to_g = string.ascii_lowercase[0:7]
print(a_to_g)
[' a',''' c',' d',' e',& #39; f',' g']
quote = input("Enter your name : ")
print(quote[0] in a_to_g)
print(a_to_g)
真
如果您想要从a到g更多,只需更改string.ascii_lowercase
['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']
答案 5 :(得分:0)
您可以使用函数ord
和chr
转换为ascii编号并将编号转换为ascii
quote = input("Enter your name : ")
if qoute[0] in list(map(chr,range(ord('a'),ord('g')+1))):
#proceed