首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中查找字符串中的单词索引

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

Stack Overflow用户
提问于 2018-06-11 07:08:37
回答 3查看 3.8K关注 0票数 0

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

代码语言:javascript
复制
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‘和’',但我需要任何包含伊朗的单词

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-11 07:18:33

也许你可以使用

代码语言:javascript
复制
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()打印其索引。

输出:

代码语言:javascript
复制
507
票数 2
EN

Stack Overflow用户

发布于 2018-06-11 07:22:56

正如我已经提到的--问题出在列表到字符串的转换中。当您在pytz.all_timezones上调用str()时,您将获得列表的字符串表示形式,包括所有标点符号。因此,当您调用split时-结果列表中的每个单词(第一个除外)都以'字符开头。

尝试像下面这样直接迭代pytz.all_timezones

代码语言:javascript
复制
for index, zone in enumerate(pytz.all_timezones):
    if zone.lower().startswith(word):
        print(index)
票数 3
EN

Stack Overflow用户

发布于 2018-06-11 07:23:31

代码不能正常工作的原因是您正在将列表转换为字符串,因此方括号和撇号也会呈现到字符串中。

因此,与伊朗相关的时区实际上是字符串:"' iran ',“。因为字符串的第一个字母是撇号,所以当您调用t.startswith(word)时,它不匹配。

我认为转换为字符串的目的是为了让您可以将所有单词转换为小写。实现这一目标的更好方法是:

代码语言:javascript
复制
timezones = [tz.lower() for tz in pytz.all_timezones]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档