繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM