我正在尝试创建一个Python函数,该函数接受一个句子,将其变成一个列表,并确定给定字母是否出现在该列表中的任何单词中,无论大小写如何。我想让该函数返回仅包含该字母的单词的列表,每个单词的字母均以其原始大小写。
我已经能够返回这些单词,但是所有字母现在都为小写字母,即使它们最初是大写字母也是如此。在原始情况下,如何返回带有字母的单词?
我写的是:
def word_with(word, char):
char_lower = char.lower()<br/>
word_lower = word.lower()<br/>
word_string = word_lower.split()<br/>
word_with = [x for x in word_string if char_lower in x]<br/>
return(word_with)
当我测试:
word =“她在海边卖贝壳”print(word_with(word,“ s”))
输出为:
[[''s','sells','shells','seashore']
但是我希望'she'的大写字母为'S',如原文所示。我该怎么做呢?谢谢。
如果将.lower()
调用移至列表理解的条件部分,则可以返回原始单词。
类似这样的东西:
def words_with(s, char):
char_lower = char.lower()
# Get individual words
words = s.split()
# Return all words that contain char
return [word for word in words if char_lower in word.lower()]
我会尝试拆分成小写,然后根据从列表理解中获得的索引返回这些单词。
def word_with(word, char):
char_lower = char.lower()<br/>
original_split = word.split()
word_lower = word.lower()<br/>
word_string = word_lower.split()<br/>
word_with = [x for x in range(len(word_string)) if char_lower in word_string[i]]<br/>
return([original_split[i] for i in word_with])
使用此:
[x for x in word_string if char_lower in x.lower()]
def word_with(word, char):
char_lower = char.lower()
word_string = word.split()
word_with = [x for x in word_string if char_lower in x.lower()]
return(word_with)
word = "She sells seashells by the seashore"
print(word_with(word, "s"))
['She', 'sells', 'seashells', 'seashore']
我们可以使用正则表达式来做到这一点:请使用此代码检查您是否获得了所需的输出]
import re
def word_with(word, char):
word_string = word.split()
print(word_string)
word_with = [x for x in word_string if re.search(r'^[s]',x,re.I)]
return(word_with)
word = "She sells seashells by the seashore"
print(word_with(word,'s'))
不对字符串进行任何强制转换,并在生成器中使用regex代替in
关键字:
def word_with(word, char):
return [x for x in word.split() if re.search(char, x, re.IGNORECASE)]
应该做到这一点。
将返回与字符匹配的字母的原始单词
def word_with(word, char):
char_lower = char.lower()
word_string = word.split()
word_with = [x for x in word_string if char_lower in x.lower()]
return(word_with)