【问题标题】:Need RE to detect UTF-8需要 RE 来检测 UTF-8
【发布时间】:2013-05-21 13:43:19
【问题描述】:

我有以下代码

inf = codecs.open(inPath , encoding='utf-8')
outf = codecs.open(outPath, encoding='utf-8', mode='w')
old = u'’;'
new = u'’&#59;'
for line in inf:
    line = line.replace(old,new)
    asc = line.encode('ascii', 'xmlcharrefreplace')    
    outf.write(asc)
    # print asc
inf.close()
outf.close()

这(正确地)使用数字格式将智能引号和重音字符等转换为它们的 html 实体格式。它会转换

<p>Dreams like: “Someday I’ll travel to…; someday I’ll write a book;

进入

<p>Dreams like: &#8220;Someday I&#8217;ll travel to&#8230;; someday I&#8217;ll write a book; 

这都是正确的。

但是,代码更下游,看到中间的&amp;#8230;;,删除了双分号,然后抱怨它没有得到一个有效的实体。我无法更改此代码。

从我的代码中可以看出,我发现了一个实体后跟分号的情况。我不想替换源代码中的所有分号。

如何检测代码点 > 127 的 UTF-8 字符后面的分号,以便可以将其替换为 &amp;#59;?谢谢。

【问题讨论】:

  • 在我看来问题出在“删除双分号然后抱怨它没有有效实体”的代码上;您也应该发布该代码;而且我不认为从文本中删除双分号是所谓的预期行为。
  • 我完全同意下游代码已损坏。要么是亚马逊的代码,要么是苹果的代码——他们不会玩。
  • 那么您调用的代码是什么?也许问题是“为什么 Apple 的任何 API 会从我的文本中删除双分号?”不是用于查找带有以下分号的 UTF-8 字符的正则表达式
  • 我只是将一个 epub 文件加载到 iTunes 并复制到我的 iPad。

标签: python regex utf-8


【解决方案1】:

掌心!

如果我先转换为 htmlentites,然后将 ;; 替换为 ;&amp;#69; 就可以解决我的问题。

自我提醒 - 考虑你在哪里做事,以及做什么!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2020-09-15
    • 2014-05-17
    • 2013-04-24
    • 2012-10-21
    • 2012-01-04
    • 2020-08-04
    相关资源
    最近更新 更多