我正在使用正则表达式替换输入字符串中的引号。我的数据包含两种“类型”的引号 -
" and “
两者之间有非常细微的差别。目前,我在我的正则表达式中明确提到了这两种类型
\"*\“*
我担心在未来的数据中我可能会得到不同的“类型”报价,我的正则表达式可能会失败。存在多少种不同类型的报价?有没有办法将它们规范化为一种类型,这样我的正则表达式就不会因看不见的数据而中断?
编辑 -
我的输入数据由 HTML 文件组成,我正在将 HTML 实体和 URL 转义为 ASCII
escaped_line = HTMLParser.HTMLParser().unescape(urllib.unquote(line.decode('ascii','ignore')))
其中 line 指定 HTML 文件中的每一行。我需要“忽略”ASCII,因为我数据库中的所有文件都没有相同的编码,而且在读取文件之前我不知道编码。
编辑2
我无法使用替换功能这样做。我尝试了 replace('"','') 但它没有替换其他类型的引号 '“'。如果我将它添加到另一个替换函数中,它会抛出非 ASCII 字符错误。
条件
不允许使用外部库,只能使用 native python 库。
最佳答案
我认为 Python 的正则表达式实现中没有“引号”字符类,因此您必须自己进行匹配。
您可以保留一个常用引号 unicode 字符列表 ( here's a list for a good start ) 并构建以编程方式匹配引号的正则表达式部分。
关于python - 在正则表达式中容纳两种类型的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9860400/