在python中查找字符串中的单词索引

时间:2018-06-10 23:08:37

标签: python pytz

我有一个列表,我想找到以伊朗开头的任何单词的索引并打印出来。

import pytz
word = 'iran'
text = str(pytz.all_timezones).lower()
for t in text.split():
    if t.startswith(word):
       print(text[t.index(word)])

输出是'a'和','但我需要包含iran的任何单词

3 个答案:

答案 0 :(得分:3)

正如我已经提到的 - 问题在于您的列表中的字符串转换。 当您在"whatever"上调用var x = "This is A string"; x = [] //Now the variable has been reassigned to an array. x = {} //Now the variable has been reassigned to an object. 时,您会获得列表的字符串表示形式,包括所有标点字符。因此,当您致电str()时 - 结果列表中的每个单词(第一个除外)都以pytz.all_timezones字符开头。

尝试直接迭代split,例如此代码段:

'

答案 1 :(得分:2)

也许你可以使用

import pytz
word = 'iran'
text = [x.lower() for x in pytz.all_timezones]
for t in text:
    if t.startswith(word):
        print(text.index(t))

列表理解和lower()用于列出元素为字符串的列表。

使用startswith()检查这些元素,如果其返回值为True,则其索引将打印为index()

输出:

507

答案 2 :(得分:1)

您的代码无法正常工作的原因是您将列表转换为字符串,因此方括号和撇号也会呈现在字符串中。
因此,与伊朗相关的时区实际上是字符串:"' iran',"。这是字符串的第一个字母是撇号,所以当你调用t.startswith(word)时,它不匹配。
我认为转换为字符串的目的是为了让你可以将所有单词转换为小写。实现这一目标的更好方法是:

pytz.all_timezones