我正在尝试使用for
循环来查找字符串中包含正好一个字母 e 的每个字词。
我的猜测是我需要使用for
循环首先将字符串中的每个单词分隔到自己的列表中(例如,this is a string
转换为['this']
,{{1} },['is']
,['a']
)
然后,我可以使用另一个For循环来检查每个单词/列表。
我的字符串存储在变量笑话。
中我在构造For循环时遇到问题,无法将每个单词放入自己的列表中。有什么建议?
['string']
答案 0 :(得分:8)
这是list comprehensions的经典案例。要生成仅包含一个字母的单词列表,请使用以下来源。
words = [w for w in joke.split() if w.count('e') == 1]
答案 1 :(得分:2)
要查找只有一个字母的单词' e',请使用正则表达式
import re
mywords = re.match("(\s)*[e](\s)*", 'this is your e string e')
print(mywords)
答案 2 :(得分:1)
我会使用Counter
:
from collections import Counter
joke = "A string with some words they contain letters"
j2 = []
for w in joke.split():
d = Counter(w)
if 'e' in d.keys():
if d['e'] == 1:
j2.append(w)
print(j2)
这导致:
['some', 'they']
答案 3 :(得分:1)
使用numpy
执行此操作的另一种方法是:
s = 'Where is my chocolate pizza'
s_np = np.array(s.split())
result = s_np[np.core.defchararray.count(s_np, 'e').astype(bool)]
答案 4 :(得分:0)
这是一种方式:
mystr = 'this is a test string'
[i for i in mystr.split() if sum(k=='e' for k in i) == 1]
# test
如果您需要显式循环:
result = []
for i in mystr:
if sum(k=='e' for k in i) == 1:
result.append(i)
答案 5 :(得分:0)
sentence = "The cow jumped over the moon."
new_str = sentence.split()
count = 0
for i in new_str:
if 'e' in i:
count+=1
print(i)
print(count)