标准化 python 中的双引号、单引号和撇号

Standarzing double quotes, single quotes and apostrophes in python

因为我使用许多不同的字体并且对这些符号中的每一个都有特殊处理,所以我想标准化我的文本字体中的所有引号和撇号条目。

我正在寻找与跳过行条目类似的内容

content=re.sub(r'\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]', '\n', content)

或连字符

content = regex.sub(r'\p{Pd}+', '-', content)

你能帮帮我吗?

如果您使用 Uniview 工具,您可以搜索所有包含对“单引号”、“双引号”、“撇号”的引用的 Unicode 符号,例如

这里是经过一些修剪的输出:

单引号,[\u02BB\u02BC\u066C\u2018-\u201A\u275B\u275C](见demo):

  • ʻ - 02BB 修饰符字母变成逗号
  • ʼ - 02BC 修饰符字母撇号
  • ٬ - 066C 阿拉伯千位分隔符
  • - 2018 左单引号
  • - 2019 右单引号
  • - 201A 单低 9 引号
  • - 275B 重型单车逗号引号装饰品
  • - 275C 重单逗号引号装饰品

双引号,[\u201C-\u201E\u2033\u275D\u275E\u301D\u301E](参见demo):

  • - 201C 左双引号
  • - 201D 右双引号
  • - 201E 双低 9 引号
  • - 2033 双素数
  • - 275D 重型双面逗号引号装饰品
  • - 275E 重双逗号引号装饰品
  • - 301D 反双引号
  • - 301E 双引号

撇号,[\u0027\u02B9\u02BB\u02BC\u02BE\u02C8\u02EE\u0301\u0313\u0315\u055A\u05F3\u07F4\u07F5\u1FBF\u2018\u2019\u2032\uA78C\uFF07](参见demo):

  • ' - 0027 撇号
  • ʹ - 02B9 修饰符字母底数
  • ʻ - 02BB 修饰符字母变成逗号
  • ʼ - 02BC 修饰符字母撇号
  • ʾ - 02BE 修饰符字母右半环
  • ˈ - 02C8 修饰符字母竖线
  • ˮ - 02EE 修饰符字母双撇号
  • ́ ‎ - 0301 结合急性口音
  • ̓ - 0313 组合上面的逗号
  • ̕ - 0315 组合右上方的逗号
  • ՚ - 055A 亚美尼亚撇号
  • ׳ - 05F3 希伯来语标点符号 GERESH
  • ߴ - 07F4 NKO 高音撇号
  • ߵ - 07F5 NKO 低音撇号
  • ᾿ - 1FBF 希腊 PSILI
  • - 2018 左单引号
  • - 2019 右单引号
  • - 2032 PRIME
  • - A78C 拉丁文小写字母 SALTILLO
  • - FF07 全角撇号

请注意,这些类别是主观的。
例如,Single Quote
没有单一的 Unicode 属性 或 双引号,这将为您提供所需的跨度。
但是,您可以使用子集,例如

\p{Block=General_Punctuation}(?<=\p{Quotation_Mark}) 将给出这些 ‘’‚‛“”„‟‹›

的子集

而仅使用 \p{Quotation_Mark}
将给出这个子集 "'«»‘’‚‛“”„‟‹›⹂「」『』〝〞〟﹁﹂﹃﹄"'「」
其中一些可能是有问题的引号。

这是另一个\p{Line_Break=Quotation}
这给了这些 "'«»‘’‛“”‟‹›❛❜❝❞❟❠⸀⸁⸂⸃⸄⸅⸆⸇⸈⸉⸊⸋⸌⸍⸜⸝⸠⸡

所以,请注意,根据 Unicode
,没有明确的 SET 规格。


对于连字符 \p{Pd} ,等效的正则表达式可能是

find    (?:[\u002D\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D]|\uD803\uDEAD)
replace -  

对于单引号

find:   [\u0060\u00B4\u2018\u2019]
replace '

对于双引号

find    [\u201C\u201D]
replace "

另请注意,每个字符都有许多 Unicode 属性
将匹配它,因此遍历示例字符串你可以看到
重叠 属性 关系,就像这里 ->