簡體   English   中英

在python中查找字符串中的單詞索引

[英]Find word index in string in python

我有一個列表,我想找到以伊朗開頭的所有單詞的索引並將其打印出來。

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”和“,”,但我需要包含伊朗的任何單詞

正如我已經提到的-問題在您的字符串轉換列表中。 當您在pytz.all_timezones上調用str()時-您將獲得列表的字符串表示形式,包括所有標點符號。 因此,當您調用split結果列表中的每個單詞(第一個單詞除外)都以'字符開頭。

嘗試像下面的代碼片段pytz.all_timezones直接迭代pytz.all_timezones

for index, zone in enumerate(pytz.all_timezones):
    if zone.lower().startswith(word):
        print(index)

也許你可以使用

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))

List comprehension和lower()用於創建一個列表,該列表的元素為字符串。

這些元素將使用startswith()檢查,如果其返回值為True ,則其索引將使用index()打印。

輸出:

507

您的代碼無法正常工作的原因是您將列表轉換為字符串,因此方括號和撇號也被渲染到字符串中。
因此,與伊朗有關的時區實際上是字符串:“'iran',”。 那是字符串的第一個字母是撇號,所以當您調用t.startswith(word)時,它不匹配。
我認為將其轉換為字符串的目的是使您可以將所有單詞都轉換為小寫。 實現此目的的更好方法是:

timezones = [tz.lower() for tz in pytz.all_timezones]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM