【发布时间】:2015-05-11 03:08:46
【问题描述】:
我正在尝试编写一个简单的程序,从接收到的字符串中删除所有包含数字的单词。
这是我当前的实现:
import re
def checkio(text):
text = text.replace(",", " ").replace(".", " ") .replace("!", " ").replace("?", " ").lower()
counter = 0
words = text.split()
print words
for each in words:
if bool(re.search(r'\d', each)):
words.remove(each)
print words
checkio("1a4 4ad, d89dfsfaj.")
但是,当我执行这个程序时,我得到以下输出:
['1a4', '4ad', 'd89dfsfaj']
['4ad']
我不明白为什么'4ad' 会打印在第二行,因为它包含数字并且应该从列表中删除。有什么想法吗?
【问题讨论】:
-
也添加您的预期输出
-
您在迭代列表时正在修改列表。请参阅此问题,了解为什么不应该这样做:stackoverflow.com/questions/10812272/…
-
您到底想完成什么?你的限制和条件是什么?
-
与其说是约束,不如说是理解为什么会出错。我现在看到我正在修改一个正在迭代的列表,这是有道理的。
标签: python regex list iteration