相关疑难解决方法(0)

为什么Python的原始字符串文字不能以单个反斜杠结尾?

从技术上讲,任何奇数个反斜杠,如文档所述.

>>> r'\'
  File "<stdin>", line 1
    r'\'
       ^
SyntaxError: EOL while scanning string literal
>>> r'\\'
'\\\\'
>>> r'\\\'
  File "<stdin>", line 1
    r'\\\'
         ^
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

似乎解析器可以将原始字符串中的反斜杠视为常规字符(不是原始字符串的全部内容吗?),但我可能遗漏了一些明显的东西.TIA!

python string literals rawstring

157
推荐指数
6
解决办法
7万
查看次数

如何在python中编写字符串文字而不必转义它们?

有没有办法在python中声明一个字符串变量,以便它内部的所有内容都自动转义,或者有它的文字字符值?

不是要问如何用斜线来逃避引号,这是显而易见的.我要求的是一个通用的方法,使字符串文字中的所有内容,以便我不必手动完成并转义非常大的字符串的所有内容.有人知道解决方案吗?谢谢!

python string escaping

85
推荐指数
4
解决办法
9万
查看次数

如何在原始Python字符串中包含引号?

>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'
Run Code Online (Sandbox Code Playgroud)

那么我们如何获得报价但不是斜线?

请不要建议,r'what"ever'因为那时问题就变成了我们如何包含两种类型的报价?

有关

python syntax

79
推荐指数
5
解决办法
17万
查看次数

如何防止在Python中自动转义特殊字符

我正在编写一个Python脚本,它接受文件路径作为字符串,解析它们,附加一个命令名,然后构建一个列表,然后传递给它subprocess.Popen()执行.此脚本用于处理Unix和Windows文件路径,最终应在两个系统上运行.

当我在Unix下运行时,如果我给出一个无意中包含转义字符的Windows路径(例如\Users\Administrator\bin),Python会将嵌入式解释\b为退格字符.我想防止这种情况发生.

据我所知,没有函数或方法将字符串变量表示为原始字符串.该'r'修饰符仅适用于字符串常量.

到目前为止,我能得到的最接近的是:

winpath = "C:\Users\Administrator\bin" 
winpath = winpath.replace('\b','\\b')
winpathlist = winpath.split('\\') 
Run Code Online (Sandbox Code Playgroud)

此时,winpathlist应该包含['C:','Users','Administrator','bin'],而不是['C','Users','Administrator\x08in'].

我可以添加额外的呼叫winpath.replace()处理等逃跑我可能会- ,\a,\f,\n,,\r -但不是.\t\v\x

是否有更多的pythonic方式来做到这一点?

python escaping special-characters

8
推荐指数
2
解决办法
3万
查看次数

Python MySQL转义特殊字符

我正在使用python将一个字符串插入带有特殊字符的MySQL.

要插入的字符串如下所示:

macaddress_eth0;00:1E:68:C6:09:A0;macaddress_eth1;00:1E:68:C6:09:A1
Run Code Online (Sandbox Code Playgroud)

这是SQL:

UPGRADE inventory_server 
set server_mac = macaddress\_eth0\;00\:1E\:68\:C6\:09\:A0\;macaddress\_eth1\;00\:1E\:68\:C6\:09\:A1' 
where server_name = 'myhost.fqdn.com
Run Code Online (Sandbox Code Playgroud)

当我执行更新时,我收到此错误:

ERROR 1064 (42000): 
You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'UPGRADE inventory_server 
set server_mac = 'macaddress\_eth0\;00\:1E\:68\:C6\:09\' at line 1
Run Code Online (Sandbox Code Playgroud)

python代码:

sql = 'UPGRADE inventory_server set server_mac = \'%s\' where server_name = \'%s\'' % (str(mydb.escape_string(macs)),host)
print sql

try:
    con = mydb.connect(DBHOST,DBUSER,DBPASS,DB);
    with con:
       cur = con.cursor(mydb.cursors.DictCursor)
       cur.execute(sql)
   con.commit() …
Run Code Online (Sandbox Code Playgroud)

python mysql

7
推荐指数
2
解决办法
2万
查看次数