其他分享
首页 > 其他分享> > 将标点符号添加到列表?

将标点符号添加到列表?

作者:互联网

我的标点符号有个小问题.

我的任务是检查文本中是否有重复的单词,列表中是否有重复的单词,我的工作是使用.upper()突出显示它们.

文字示例:我喜欢苹果,苹果是我所知道的最好的东西.

因此,我采用了原始文本,将其从标点符号中剥离,将所有单词转换为小写字母,然后拆分列表.
通过for循环,我将列表中的每个单词相互比较,发现所有重复的单词,所有这些都放在了新列表中.

示例(使用for循环后):我喜欢苹果APPLES是我所知道的最好的东西

因此,新列表现在与原始列表相似,但有一个主要例外,它缺少标点符号.

是否有方法将标点符号添加到新列表中(假设它们是“应该存在”)(从旧列表位置开始)?
python中是否有某种方法可以做到这一点,还是我必须将两个列表与另一个for循环进行比较,然后将标点符号添加到新列表中?

NewList = []#创建一个空列表

for word in text: 
    if word not in NewList: 
        NewList.append(word)
    elif word in NewList: # 
        NewList.append(word.upper())
List2 = ' '.join(NewList)

上面的代码适用于较长的文本,多数民众赞成在我用来突出显示重复的单词的代码.
唯一的问题是新文件中不存在标点符号,这就是我唯一的问题.

解决方法:

这是将子方法与内置regexp模块的回调一起使用的示例.
该解决方案尊重所有标点符号.

import re

txt = "I like,, ,apples, apples! is the .best. thing *I* know!!1"


def repl(match, stack):
    word = match.group(0)
    word_upper = word.upper()
    if word_upper in stack:
        return word_upper
    stack.add(word_upper)
    return word

def highlight(s):
    stack = set()
    return re.sub('\\b([a-zA-Z]+)\\b', lambda match: repl(match, stack), s)

print txt
print highlight(txt)

标签:punctuation,list,python
来源: https://codeday.me/bug/20191028/1955884.html