提问人:DanielTheRocketMan 提问时间:7/4/2020 更新时间:7/4/2020 访问量:1657
在 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]
(查看演示):
ʻ
- 02BB修饰符字母变逗号ʼ
- 02BC 修饰符字母撇号٬
- 066C 阿拉伯千位分离器‘
- 2018 左单引号’
- 2019 右单引号‚
- 201A 单低 9 引号❛
- 275B重型单转逗号引号装饰❜
- 275C重型单逗号引号装饰
双引号,[\u201C-\u201E\u2033\u275D\u275E\u301D\u301E]
(查看演示):
“
- 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]
(见演示):
'
- 0027 撇子ʹ
- 02B9 修饰符字母素数ʻ
- 02BB修饰符字母变逗号ʼ
- 02BC 修饰符字母撇号ʾ
- 02BE修饰字母右半环ˈ
- 02C8 修饰符字母垂直线ˮ
- 02EE修饰字母双撇号́
- 0301 结合急性口音̓
- 0313 上面的逗号组合̕
- 0315 右上方的逗号组合՚
- 055A 亚美尼亚撇号׳
- 05F3 希伯来语标点符号 GERESHߴ
- 07F4 NKO 高音撇号ߵ
- 07F5 NKO 低音撇号᾿
- 1FBF 希腊语 PSILI‘
- 2018 左单引号’
- 2019 右单引号′
- 2032年总理ꞌ
- A78C 拉丁文小写字母 SALTILLO'
- FF07 全宽撇号
请注意,这些类别是主观的。
例如,单引号
或双引号没有单个 Unicode 属性可以为您提供所需的跨度。
但是,例如,您可以使用子集
\p{Block=General_Punctuation}(?<=\p{Quotation_Mark})
将给出这些的子集‘’‚‛“”„‟‹›
而使用 just
将给出这个子集
,其中有些可能是可疑的引号。\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 属性,因此遍历示例字符串可以看到
重叠的属性
关系,如下所示 ->
评论