好吧,我正在尝试清理我的文件,其中包含法语口音的代码:
#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'
答案 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
处理字节