字符串中字符的索引

时间:2015-02-10 06:29:54

标签: python

我试图找出字符串中特定字符的索引。例如:

MyString:abfkjgck
Text:afgf

我想在MyString中找到每个文本字符的索引。这是尝试过的:

a=string.ascii_uppercase
t=input("Enter the plain text :")
d=t[0]
x=a.index(d)
print(x)

我一直收到价值错误。

1 个答案:

答案 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]