#!/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)
并且它有效但现在因为我只想检查每个单词的第一个字母,它不起作用。
任何线索?
答案 0 :(得分:1)
正则表达式[a-zA-Z]*
将匹配空字符串,因为*
表示“零或更多”。请改用[a-zA-Z]+
以确保您的字词长度至少为一个字母。
此外,由于您使用的是re.IGNORECASE
,因此您无需在模式中放置大写和小写字母。如果模式不包含re.MULTILINE
或^
,则不需要$
选项,如果模式中没有re.DOTALL
则不需要.
图案。所以它应该是:
pattern = re.compile("[a-z]+", re.IGNORECASE)