繁体   English   中英

我如何摆脱撇号?

[英]How can I get rid of apostrophe?

我正在传递一个文本文件,我希望摆脱所有可能的麻烦。 我正在使用以下功能:

def apost(nostop):
    for n in nostop:
        final=[]
        removed=[]
        for y in n:
            r=remove_apos(y)
            final.append(r)
        removed.append(final)
    print("Task 2: Apostrophy removed!")
    return removed

这是remove_apos的主体:

def remove_apos(stemmed):
    for suffix in ["'s", "'v", "'t", "'d", "'r", "'"]:
        if stemmed.endswith(suffix):
            return stemmed[:-len(suffix)]
    return stemmed

当我说一个句子时: football's awesome又回到了我football'我无法摆脱撇号。 此外,当我removed打印时,我得到: [[u'football\’s']]

您的问题似乎是您正在与ASCII撇号进行比较,但是您的文本包含或也包含Unicode撇号。

普通的旧撇号U + 0027是您在未按下Shift的情况下按一下美国键盘上的['/“]键时得到的默认值。

U + 2019的“正确单引号”完全是另外一回事。 您可能会从文字处理程序或电子邮件程序中获取该信息,该程序会尝试自动将直引号转换为斜引号。 (例如,Word和Office Email都在文本框中执行此操作。文档中的Libre Office也是如此。)

您可能应该使用正则表达式来匹配所有这些可能的字符。

删除所有撇号真的很容易:

def remove_apos(nostop):
    return "".join(char for char in nostop if char != "'")

您还可以使用while循环和str.remove()方法将其删除:

def remove_apos(nostop):
    while "'" in nostop:
        nostop = nostop.remove("'")
    return nostop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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