我正在传递一个文本文件,我希望摆脱所有可能的aprostrophe。 我正在使用以下功能:
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\u2019s']]
答案 0 :(得分:3)
您的问题似乎是您正在与ASCII撇号进行比较,但您的文字包含或包含Unicode撇号。
普通的旧撇号U + 0027是默认情况下,当您按下美式键盘上的['/“]键而没有按下班次时所获得的。
“正确的单一引号”,U + 2019,完全是另一回事。您可以从文字处理程序或尝试自动从直引号转换为有角度的引号的电子邮件程序中获得该功能。 (例如,Word和Office Email都在文本框中执行此操作。与文档中的Libre Office一样。)
您应该使用正则表达式来匹配所有这些可能的字符。
答案 1 :(得分:1)
删除所有撇号非常容易:
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