#!/usr/bin/python #this looks for words in dictionary that begin with 'in' and the suffix is a real word wordlist = [line.strip() for line in open('/usr/share/dict/words')] newlist = [] for word in wordlist: if word.startswith("in"): newlist.append(word) for word in newlist: word = word.split('in') print newlist
我如何让程序从它开头的所有单词中删除字符串“in”?现在它不起作用
答案 0 :(得分:2)
#!/usr/bin/env python
# Look for all words beginning with 'in'
# such that the rest of the word is also
# a valid word.
# load the dictionary:
with open('/usr/share/dict/word') as inf:
allWords = set(word.strip() for word in inf) # one word per line
然后我们可以做
# get the remainder of all words beginning with 'in'
inWords = [word[2:] for word in allWords if word.startswith("in")]
# filter to get just those which are valid words
inWords = [word for word in inWords if word in allWords]
或将其运行到单个语句中,例如
inWords = [word for word in (word[2:] for word in allWords if word.startswith("in")) if word in allWords]
第二种方式也可以让我们为内部循环使用生成器,从而减少内存需求。
答案 1 :(得分:1)
split()
返回通过拆分获得的细分列表。此外,
word = word.split('in')
不会修改您的列表,它只是修改正在迭代的变量。
尝试用这个替换你的第二个循环:
for i in range(len(newlist)):
word = newlist[i].split('in', 1)
newlist[i] = word[1]
答案 2 :(得分:1)
如果您只想要以“in”开头但删除了“in”的单词,那么很难从newlist
中找出您想要的内容,那么您可以使用slice:
newlist = [word[2:] for word in wordlist if word.startswith('in')]
如果你想要以“in”开头的单词一旦被“删除”仍然在wordlist
中(在你的评论中你的意思是“真实”吗?)那么你需要一些东西差别很小:
newlist = [word for word in wordlist if word.startswith('in') and word[2:] in wordlist
请注意,在Python中我们使用的是list
,而不是“数组”。
答案 3 :(得分:0)
假设wordlist
是单词列表。以下代码应该可以解决问题:
for i in range(len(wordlist)):
if wordlist[i].startswith("in"):
wordlist[i] = wordlist[i][2:]
如果列表中的单词数量非常大,最好使用while
循环。