我试图找出字符串中特定字符的索引。例如:
MyString:abfkjgck
Text:afgf
我想在MyString中找到每个文本字符的索引。这是尝试过的:
a=string.ascii_uppercase
t=input("Enter the plain text :")
d=t[0]
x=a.index(d)
print(x)
我一直收到价值错误。
答案 0 :(得分:1)
尝试:
a=string.ascii_uppercase
t=input("Enter the plain text :")
x=[a.index(d.upper()) for d in t]
print(x)
示例输出:
Enter the plain text :afgf
[0, 5, 6, 5]
考虑为什么此代码可以生成ValueError
:
a=string.ascii_uppercase
t=input("Enter the plain text :")
d=t[0]
x=a.index(d)
print(x)
如果在ValueError
中找不到d
,则会出现a
。请注意,s
仅包含大写ASCII字母。因此,它不包含任何小写字母。如果用户输入小写字母,则会产生ValueError
消息。
使用d.upper()
代替d
,在上面建议的代码中删除了此内容。
此外,要收集用户键入的所有字符的索引而不是第一个字符的索引,可以使用列表理解:x=[a.index(d.upper()) for d in t]
。
假设我们要忽略用户输入的任何空格:
import string
a=string.ascii_uppercase
t=input("Enter the plain text :")
x=[a.index(d.upper()) for d in t if d != " "]
print(x)
在此代码中,任何空格或其他非字母字符都赋值为-1
:
import string
a=string.ascii_uppercase
t=input("Enter the plain text :")
x=[a.find(d.upper()) for d in t]
print(x)
示例:
Enter the plain text :a#b% c
[0, -1, 1, -1, -1, 2]