使用For循环将字符串中的单词更改为列表项

时间:2018-02-09 02:44:42

标签: python string list for-loop

我正在尝试使用for循环来查找字符串中包含正好一个字母 e 的每个字词。

我的猜测是我需要使用for循环首先将字符串中的每个单词分隔到自己的列表中(例如,this is a string转换为['this'],{{1} },['is']['a']

然后,我可以使用另一个For循环来检查每个单词/列表。

我的字符串存储在变量笑话

我在构造For循环时遇到问题,无法将每个单词放入自己的列表中。有什么建议?

['string']

6 个答案:

答案 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)