在Python中获取字符串中字符的索引

2024-10-02 10:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决的问题是:我有一个字符串,比如说,"abcabcdefdefjhi"。我希望结果是这样的数值输出:

a: 0, 3
b: 1, 4
c: 2, 5
.
.
.

另外,这个字符串是阿拉伯语的,但是知道如何在阿拉伯语和英语中这样做还是很有帮助的。你知道吗


Tags: 字符串数值abcabcdefdefjhi
3条回答

排成一行:

c = "abcabcdefdefjhi"
print "\n".join(["%s: %s" %( e, ", ".join([ str(j) for j, e2 in enumerate(c) if e2==e]) ) for i, e in enumerate(sorted(set(c)))])

1)不重复列表:

sorted(set(c))

['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i', 'j']

2)职位列表

[ (i, e) for i, e in enumerate(sorted(set(c)))]

[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), ... , (6, 'h'), (7, 'i'), (8, 'j')]

3)按字母分组:

[( e, [ j for j, e2 in enumerate(c) if e2==e] ) for i, e in enumerate(sorted(set(c)))]

[('a', [0, 3]), ('b', [1, 4]), ('c', [2, 5]), ..., ('i', [14]), ('j', [12])]

4)减少一行

print "\n".join(["%s: %s" %( e, ", ".join([ str(j) for j, e2 in enumerate(c) if e2==e]) ) for i, e in enumerate(sorted(set(c)))])

a: 0, 3

b: 1, 4

c: 2, 5

d: 6, 9

e: 7, 10

f: 8, 11

h: 13

i: 14

j: 12

列表字典可能是合适的,将字母映射到索引列表:

s = "abcabcdefdefjhi"
indices = {}

for i, l in enumerate(s):
    if l not in indices:
        indices[l] = []

    indices[l].append(i)

for k, v in indices.items():
    print("{}: {}".format(k, str(v)[1:-1]))

输出:

a: 0, 3
b: 1, 4
c: 2, 5
d: 6, 9
e: 7, 10
f: 8, 11
j: 12
h: 13
i: 14

或者,用"لوحة المفاتيح ال"测试:

ل: 0, 6, 15
و: 1
ح: 2, 12
ة: 3
 : 4, 13
ا: 5, 9, 14
م: 7
ف: 8
ت: 10
ي: 11

Try it。你知道吗

使用枚举,如下所示:

def findOccurrences(s, ch):
    return [i for i, letter in enumerate(s) if letter == ch]


print(findOccurrences('abcabcdefdefjhi', 'a'))

输出:

[0, 3]

相关问题 更多 >

    热门问题