![](/img/trans.png)
[英]How to change words in a list to upper/lower case using range - Python
[英]Python: How to find a letter in a sentence's list of words and return those words in their original case (upper/lower)
我正在尝试创建一个 Python function ,它接受一个句子,将其转换为一个列表,并确定给定字母是否出现在该列表中的任何单词中,无论字母大小写如何。 我希望 function 然后只返回一个包含该字母的单词的列表,每个单词的字母都是原始大小写。
我已经能够返回这些单词,但现在所有字母都是小写的,即使它们最初是大写的。 如何在原始情况下返回带有字母的单词?
我写的:
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 = "她在海边卖贝壳"
打印(word_with(单词,“s”))
output 是:
['她','卖','贝壳','海滨']
但我希望“她”有一个大写的“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(sent, letter):
x = [word for word in sent.split() if letter in word.lower()]
return x
用这个:
[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']
不要对字符串执行任何转换,并在生成器中使用正则表达式而不是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()<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])
我们可以使用正则表达式来做到这一点:请检查您是否使用此代码获得了所需的 output
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'))
这将返回与字符匹配的字母中的原始单词
def word_with(word, char):
return [x for x in word.split() if char.lower() in x.lower()]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.