使用 unicode 替换特殊字符

时间:2021-01-09 02:37:33

标签: python regex unicode

如何根据德语拼写将双引号替换为风格正确的引号(„ U+201e 或“ U+201c )。

示例:

zitat = 'Laut Durkheim ist ein "soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt"'

我已经尝试过代码

import re
zitatnew = re.sub(r'"', r'[u+201e]', zitat)
print(zitatnew)

Laut Durkheim ist ein [u+201e]soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt[u+201e]

如何使用 unicode 用正确的双引号替换双引号?

也许你们中的一个可以帮助我。 附注我很抱歉我的英语不好!

3 个答案:

答案 0 :(得分:1)

我猜你正在寻找这个

re.sub(r'"', u"\u201E", zitat)

或更合适的

s = 'Laut Durkheim ist ein "soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt"'
# substitute the opening quote
output = re.sub('\B"', u"\u201C", s)
# substitute the closing quote as well
output = re.sub('"\B', u"\u201D", output)

>>> output
'Laut Durkheim ist ein “soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt”'

给出

<块引用>

'Laut Durkheim ist ein “soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt”'

答案 1 :(得分:1)

您可以在字符串中有 " 时进行迭代,并在每次迭代中替换一对引号:

zitat = 'Laut Durkheim ist ein "soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt"'

print(f"Before replace: {zitat}")

while "\"" in zitat:
    zitat = zitat.replace("\"", "\u201e", 1)
    zitat = zitat.replace("\"", "\u201c", 1)

print(f"After replace: {zitat}")

1 中作为第三个参数的 replace() 对于仅替换 " 的第一次出现很重要。这应该为具有偶数 " 的任何字符串提供正确的输出。

输出:

Before replace: Laut Durkheim ist ein "soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt"
After replace: Laut Durkheim ist ein „soziologischer Tatbestand jede mehr oder weniger [...] unabhängiges Eigenleben besitzt“

答案 2 :(得分:0)

re.sub 比一遍遍替换更高效,而且有了替换函数就可以一次完成:


import re
s = '"this" "is" "a" "test" "string"'
s = re.sub(r'(\b")|("\b)',lambda m: '\u201c' if m.group(1) else '\u201e',s)
print(s)
„this“ „is“ „a“ „test“ „string“