给定文件所包含的行如:Python原始字符串赋值
(?i:\bsys\.user_catalog\b)
在阅读这些线,我希望值是原始的字符串(转义),这意味着,在内存中,行应该是
r'(?i:\bsys\.user_catalog\b)'
代替
(?i:\bsys\.user_catalog\b)
当传递到库如的SQLObject这是逃脱。
例如,对于SQLObject的,如果我的状态
Table(column=r'(?i:\bsys\.user_catalog\b)')
我得到想要的结果,而如果我说出
Table(column='(?i:\bsys\.user_catalog\b)')
我不知道。
所以问题是基本上,我可以传递一个原始字符串,当我不处于声明/分配模式(例如a = r'string'
),而是字符串已经在内存中。
“如果您从文件中读取字符串,它将已正确转义。”这有点让人误解。更准确地说,“转义”的概念不适用于字符串**对象**,而仅适用于字符串**文字**。如果从文件中读取一个反斜杠,则会得到一个带有一个反斜杠的字符串。如果你写'“\\”',你会得到一个带有一个反斜杠的字符串。转义只发生在源代码中,这样就可以清楚地说出字符串的部分内容以及代码的其余部分。一旦字符串对象被创建,这已经很清楚了。 –
同样,原始字符串不会“转换”;他们是*替代语法*用于创建*相同类型的对象*。 –
@KarlKnechtel:谢谢你的澄清。我希望我可以像这样写:) –