是否从变量中打印原始字符串?(没有得到答案)

2024-06-01 12:05:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一种方法,从一个变量打印原始形式的字符串。例如,如果我为路径向windows添加一个环境变量,该变量可能看起来像“C:\ windows\Users\alexb\”,我知道我可以:

print(r'C:\\Windows\Users\alexb\')

但我不能在变量前加r。。。。为了纪念

test = 'C:\\Windows\Users\alexb\'
print(rtest)

很明显只是想打印rtest

我也知道

test = 'C:\\Windows\Users\alexb\'
print(repr(test))

但这将返回“C:\ Windows\Users\x07lexb” 也一样

test = 'C:\\Windows\Users\alexb\'
print(test.encode('string-escape'))

因此,我想知道是否有任何优雅的方法,使一个变量保持该路径打印原始,仍然使用测试。如果只是

print(raw(test))

但事实并非如此:


Tags: 方法字符串test路径windows环境变量users形式
3条回答

不能将现有字符串变成“raw”。文本上的r前缀由解析器理解;它告诉它忽略字符串中的转义序列。但是,一旦字符串文本被解析,原始字符串和“常规”字符串就没有区别。例如,如果您有一个包含换行符的字符串,那么在运行时就无法判断该换行符是否来自转义序列\n,是否来自三引号字符串中的文字换行符(甚至可能是原始换行符!),从调用chr(10)开始,从文件中读取,或者您可以想到的其他方法。从这些方法中构造的实际字符串对象看起来是相同的。

通常,要从字符串变量中生成原始字符串,我使用以下命令:

string = "C:\\Windows\Users\alexb"

raw_string = r"{}".format(string)

输出:

'C:\\\\Windows\\Users\\alexb'

我遇到了一个类似的问题,偶然发现了这个问题,多亏了尼克·奥尔森·哈里斯,我知道解决问题的办法在于改变字符串。

两种解决方法:

  1. 使用本机python函数获取所需的路径,例如:

    test = os.getcwd() # In case the path in question is your current directory
    print(repr(test))
    

    这使得它独立于平台,现在可以与.encode一起工作。如果这是你的一个选择,它是更优雅的解决方案。

  2. 如果字符串不是路径,请以与python字符串兼容的方式定义它,在本例中,通过转义反斜杠:

    test = 'C:\\Windows\\Users\\alexb\\'
    print(repr(test))
    

相关问题 更多 >