字符串索引超出范围 - 索引错误

时间:2016-04-26 20:43:32

标签: python

#!/usr/bin/env python

import sys
import re

# regular expressions

pattern = re.compile("[a-zA-Z]*",
                 re.MULTILINE | re.DOTALL | re.IGNORECASE)

# Read pairs as lines of input from STDIN
for line in sys.stdin:

    # loop through every word that matches the pattern
    for word in pattern.findall(line):
        while i < 1:
            if len(converted_word) != WINDOW:
                # print "word =", word
                if a_to_f_pattern.match(word[i]):
                   .....

            else:
               .....
        i = 0

这一行

if a_to_f_pattern.match(word[i]):

给了我标题中的错误,我无法弄清楚为什么

之前,我有while i < len(word)并且它有效但现在因为我只想检查每个单词的第一个字母,它不起作用。

任何线索?

1 个答案:

答案 0 :(得分:1)

正则表达式[a-zA-Z]*将匹配空字符串,因为*表示“零或更多”。请改用[a-zA-Z]+以确保您的字词长度至少为一个字母。

此外,由于您使用的是re.IGNORECASE,因此您无需在模式中放置大写和小写字母。如果模式不包含re.MULTILINE^,则不需要$选项,如果模式中没有re.DOTALL则不需要.图案。所以它应该是:

pattern = re.compile("[a-z]+", re.IGNORECASE)