从字符串中删除反斜杠

6
我有一个字符串,是一个句子,像这样:I don't want it, there'll be others 因此文本看起来像这样:I don\'t want it, there\'ll be other 由于从另一个来源读取,所以一些原因会在'旁边的文本中带有\。我想将它删除,但无法实现。我已经尝试过: sentence.replace("\'","'") sentence.replace(r"\'","'") sentence.replace("\\","") sentence.replace(r"\\","") sentence.replace(r"\\\\","") 我知道\是用来转义的,所以不确定如何处理引号。

你在源代码中有实际文本“'我不想要它,还会有其他的'”吗?还是从某个文件或用户输入中读取文本? - Some programmer dude
你如何编写文本?反斜杠在打印时会自动删除。 - Eugene Soldatov
@JoachimPileborg 这是从某个文件中读取的,而不是输入的。 - jason
3
反斜杠实际上在文本文件中吗? - Some programmer dude
翻译:糟糕,当我使用“print”打印该变量时,它没有显示出来,那么这是一个nltk的问题吗?它正在拆分“don't”,我看到的只有“don”。 - jason
4个回答

9
< p > \ 只是用来 转义 ' 字符的。它只在字符串的表示形式 (repr) 中可见,实际上并不是字符串中的字符。请参见以下演示。

>>> repr("I don't want it, there'll be others")
'"I don\'t want it, there\'ll be others"'

>>> print("I don't want it, there'll be others")
I don't want it, there'll be others

这对我没有帮助,因为我通过 nltk 输入字符串时,它认为 don 是一个单独的单词,从而截断了 don't 这个词。 - jason
我觉得这是一个nltk的问题,谢谢你的帮助。 - jason
1
这不是一个nltk的“问题”。反斜杠是Python向您展示字符串在撇号处并未结束的方式,正如大家所说。通常的NLTK分词故意在撇号处将单词分开;这与反斜杠无关。 - alexis

2

尝试使用:

sentence.replace("\\", "")

你需要两个反斜杠,因为第一个反斜杠充当转义符号,而第二个是你需要替换的符号。


1
最好使用正则表达式来移除反斜杠:
>>> re.sub(u"u\005c'", r"'", "I don\'t want it, there\'ll be other")
"I don't want it, there'll be other"

0
如果您的文本来自抓取的文本,并且在使用NLP工具处理之前没有对其进行未转义的清理,则可以轻松取消转义HTML标记,例如:
在python2.x中:
>>> import sys; sys.version
'2.7.6 (default, Jun 22 2015, 17:58:13) \n[GCC 4.8.2]'
>>> import HTMLParser
>>> txt = """I don\'t want it, there\'ll be other"""
>>> HTMLParser.HTMLParser().unescape(txt)
"I don't want it, there'll be other"

在 Python3 中:
>>> import sys; sys.version
'3.4.0 (default, Jun 19 2015, 14:20:21) \n[GCC 4.8.2]'
>>> import html
>>> txt = """I don\'t want it, there\'ll be other"""
>>> html.unescape(txt)
"I don't want it, there'll be other"

參見:如何在Python 3.1中將字符串中的HTML實體反轉義?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接