Python:如何在句子的单词列表中找到一个字母,并以原始大小写(大写/小写)返回这些单词



我正在尝试创建一个Python函数,该函数接受一个句子,将其转换为一个列表,并确定给定的字母是否出现在该列表中的任何单词中,而不考虑字母大小写。我希望函数只返回一个包含该字母的单词列表,每个单词的字母都是原来的大小写。

我已经能够返回这些单词,但现在所有的字母都是小写的,即使它们最初是大写的。我该如何将单词和字母一起放回原来的大小写中?

我写的:

def word_with(word, char):
char_lower = char.lower()
word_lower = word.lower()
word_string = word_lower.split()
word_with = [x for x in word_string if char_lower in x]
return word_with

当我用测试时

word="她在海边卖贝壳">
print(word_with(word,"s"(

输出为:

["舍"、"卖"、"贝壳"、"海滨"]

但我希望"she"的大写字母为"S",因为它出现在原文中。我该怎么做?谢谢

您的不起作用,因为您在检查之前将单词设置为小写。一边检查它是否在单词中,一边这样做:

def word_with(sent, letter):
x = [word for word in sent.split() if letter in word.lower()]
return x

如果将.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']

我们可以使用regex来实现这一点:请检查你是否用这个代码得到了想要的输出

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):
return [x for x in word.split() if char.lower() in x.lower()]

相关内容

最新更新