aes*_*ipt 39 python printing string return
我试图找到一种从变量打印原始形式的字符串的方法.例如,如果我为一个路径的窗口添加一个环境变量,可能看起来像'C:\ Windows\Users\alexb \'我知道我可以这样做:
print(r'C:\\Windows\Users\alexb\')
Run Code Online (Sandbox Code Playgroud)
但是我不能在一个变量前面放一个r ......用于表达
test = 'C:\\Windows\Users\alexb\'
print(rtest)
Run Code Online (Sandbox Code Playgroud)
显然只会尝试打印rtest
我也知道
test = 'C:\\Windows\Users\alexb\'
print(repr(test))
Run Code Online (Sandbox Code Playgroud)
但这会返回'C:\ Windows\Users\x07lexb'
test = 'C:\\Windows\Users\alexb\'
print(test.encode('string-escape'))
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有任何优雅的方式来使变量持有该路径打印RAW,仍然使用测试.如果它只是它会很好
print(raw(test))
Run Code Online (Sandbox Code Playgroud)
但它不是:(
小智 27
我遇到了类似的问题并偶然发现了这个问题,并且要感谢Nick Olson-Harris的回答,解决方案就是改变字符串.
解决它的两种方法:
使用本机python函数获取所需的路径,例如:
test = os.getcwd() # In case the path in question is your current directory
print(repr(test))
Run Code Online (Sandbox Code Playgroud)
这使得它与平台无关,现在可以使用.encode.如果这是您的选择,那就是更优雅的解决方案.
如果您的字符串不是路径,请以与python字符串兼容的方式定义它,在这种情况下,通过转义反斜杠:
test = 'C:\\Windows\\Users\\alexb\\'
print(repr(test))
Run Code Online (Sandbox Code Playgroud)小智 27
通常,要从字符串变量中生成原始字符串,我使用以下命令:
string = "C:\\Windows\Users\alexb"
raw_string = r"{}".format(string)
Run Code Online (Sandbox Code Playgroud)
输出:
'C:\\\\Windows\\Users\\alexb'
Run Code Online (Sandbox Code Playgroud)
Nic*_*ris 24
您无法将现有字符串变为"原始"字符串.解析器r理解文字的前缀; 它告诉它忽略字符串中的转义序列.但是,一旦解析了字符串文字,原始字符串和"常规字符串"之间就没有区别了.例如,如果您有一个包含换行符的字符串,则无法在运行时告诉该换行符是否来自转义序列,来自三引号字符串中的文字换行符(可能甚至是原始字符串!),来自调用,通过从文件中读取它,或者你可能想出的任何其他内容.从任何这些方法构造的实际字符串对象看起来都是一样的.\nchr(10)
小智 7
我知道我的答案为时已晚,但对于阅读本文的人来说,我找到了一种更简单的方法
myVariable = 'This string is supposed to be raw \'
print(r'%s' %myVariable)
Run Code Online (Sandbox Code Playgroud)
尝试这个。根据您想要的输出类型。有时您可能不需要在打印字符串周围加上单引号。
test = "qweqwe\n1212as\t121\\2asas"
print(repr(test)) # output: 'qweqwe\n1212as\t121\\2asas'
print( repr(test).strip("'")) # output: qweqwe\n1212as\t121\\2asas
Run Code Online (Sandbox Code Playgroud)