2017-09-19 59 views
-2

编辑问题: 我正在写一个python函数,它从windows中复制粘贴一个路径的字符串(所以用反斜杠),并返回一个带有正斜杠的字符串,可用于由python作为路径。与侧隙和其他字符的组合,就会出现问题,比如\ n \ b ... 感谢Coldspeed,我现在有一个函数类的,做的伎俩:用字符串中的正斜杠代替反斜线

def back2forwardSlash(backSlash_string):  
    return backSlash_string.replace('\\', '/') 

什么是仍然不能令人满意的是,我必须在字符串之前用r调用该函数以将其作为原始数据读取:fileNamePath = back2forwardSlash(r'C:\Users\Dropbox\netCFD4\b30.137.nc')这可以防止将变量传入函数,而不是粘贴到字符串中。或者至少,我认为我没有解决的办法。

+1

你甚至尝试过'backSlash_string.replace('\\','/')'? – GPhilo

+0

请尝试以下建议:https://stackoverflow.com/a/26867674/4528269 –

回答

1

The pythonic way of doing this would be using string.replace

def foo(string): 
    return string.replace('\\', '/') 

此外,对于你的错误的原因在于,反斜杠可以作为一个转义序列,这是一组从它们表示不同的解释字符的开始。这意味着序列\b不是两个单独的字符,而是单个字符\b\x08。所以,你要一个原始字符串传递给你的函数:

print(foo(r'C:\Users\Dropbox\netCFD4\b30.137.nc')) 

原始字符串字面将治疗反斜杠。另一种办法是逃避你所有的反斜杠。

+0

感谢COLDSPEED。替换方法很好,但问题实际上只是通过在参数字符串前用'r'调用函数来解决,就像你所说的那样。这只是部分令人满意的,因为我不能通过变量传递函数,但总是必须在'r'后面手动粘贴字符串才能生成它。至少,我不认为我有解决方案。 – Pauli

+0

@Pauli如果你的字符串是这样进来的,源代码有问题。此外,没有真正的方法来使变量原始字符串... –