使用法语口音时语法无效

invalid syntax when working with french accents

好吧,我正在尝试清理包含法语口音代码的文件:

#353= IFCPROPERTYSINGLEVALUE('Charge d''\X2[=10=]E9\X0\clairage sp\X2[=10=]E9\X0\cifi\X2[=10=]E9\X0\e par surface',$,IFCREAL(10.7639104167097),$);

我创建了这个小函数:

def CleanSpace(sp):
    sp.replace("\X2[=11=]F4\X0\","ô")
    sp.replace("\X2[=11=]E9\X0\","é")
    return(sp)

但是 Python 3 给了我错误:

    sp.replace("\X2[=12=]F4\X0\","ô")
                               ^
SyntaxError: invalid syntax

请问我该如何解决? 提前致谢

编辑:如果有帮助,我宁愿在控制台中尝试这一行,但答案很奇怪:

$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a='02_RADIOTHERAPIE/ ARC -plateforme recherche- Radioth\X2[=13=]E9\X0\rapie'
>>> a
'02_RADIOTHERAPIE/ ARC -plateforme recherche- Radioth\X2\x00E9\X0\rapie'
>>> a.replace('\X2[=13=]E9\X0\','é')
'02_RADIOTHERAPIE/ ARC -plateforme recherche- Radioth\X2\x00E9\X0\rapie'

\ 字符转义了您的引号。这意味着 python 将继续下去,直到找到另一个引号来结束您的字符串。所以,实际上,您的字符串是 \X2[=11=]F4\X0\", 要解决此问题,请使用 \ 转义 \ 或完全删除最后一个。 新代码:

sp.replace("\X2[=10=]F4\X0\","ô")

当您将 \“ 放入 python 字符串时,它会向字符串添加文字 并且不会关闭它。以同样的方式,您可以编写 \‘ 以获得单引号,或编写 \ 以获得反斜杠。所以如果我想得到一个 Python 字符串说:

“Hi,”, said Bob \

我会在我的代码中写下:

“\“Hi,\“, said Bob \”

因为你写了 \" 而没有关闭它后面的字符串,它继续到下一行,把一切都搞砸了。

编辑:

此外,在控制台中,您并没有到处使用双反斜杠,因此它们偶尔会充当转义字符,从而导致出现奇怪的情况。每当您希望字符串在 Python 中包含反斜杠时,请编写 \.

您的文本可能包含 \X2[=18=]F4\X0\ ,但在 Python 字符串中 "\" 表示单个反斜杠,因此如果您将字符串文字中的每个反斜杠替换为双反斜杠 (不仅仅是最后一个),它应该可以工作,所以

a.replace('\X2\00E9\X0\','é')

例如。

好吧,经过大量的尝试和搜索,一行的解决方案是使用 raw-strings:

>>> a.replace(r'\X2[=10=]E9\X0\ '[:-1], 'é')
"#353= IFCPROPERTYSINGLEVALUE('Charge d''éclairage spécifiée par surface',$,IFCREAL(10.7639104167097),$);"

对于更多的行,它更难,因为我的文件中的字节已经写入,而不是因为我看到一个 '\' 它已经存在...... 为我找到的解决方案是使用 antlr4

处理字节