使用法语口音时语法无效

时间:2018-04-10 14:20:03

标签: python-3.x accent-sensitive

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

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

我创建了这个小功能:

def CleanSpace(sp):
    sp.replace("\X2\00F4\X0\","ô")
    sp.replace("\X2\00E9\X0\","é")
    return(sp)

但是Python 3给了我错误:

    sp.replace("\X2\00F4\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\00E9\X0\rapie'
>>> a
'02_RADIOTHERAPIE/ ARC -plateforme recherche- Radioth\\X2\x00E9\\X0\rapie'
>>> a.replace('\X2\00E9\X0\\','é')
'02_RADIOTHERAPIE/ ARC -plateforme recherche- Radioth\\X2\x00E9\\X0\rapie'

3 个答案:

答案 0 :(得分:1)

\字符会逃脱您的报价。这意味着python将继续运行,直到找到另一个引号来结束你的字符串。所以,实际上,你的字符串是\X2\00F4\X0\",要解决这个问题,请使用\来转义\或完全删除最后一个。 新代码:

sp.replace("\X2\00F4\X0\\","ô")

答案 1 :(得分:0)

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

“Hi,”, said Bob \

我会在我的代码中写一下:

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

因为你写了“并且没有关闭它之后的字符串,它继续到下一行并搞砸了所有内容。

修改

此外,在控制台中你没有在任何地方使用双反斜杠,所以偶尔他们扮演转义字符会导致奇怪的事情。每当您希望字符串在Python中包含反斜杠时,请写\\

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

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

例如。

答案 2 :(得分:0)

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

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

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

处理字节