【问题标题】:Substituting backlashes with forward slashes in a string用字符串中的正斜杠替换反斜杠
【发布时间】:2018-02-27 22:52:48
【问题描述】:

已编辑的问题: 我正在编写一个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') 这可以防止将变量传递到函数中,而不是粘贴到字符串中。或者至少,我认为我没有解决方案。

【问题讨论】:

标签: python string replace backslash rawstring


【解决方案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'))

原始字符串将按字面意思处理反斜杠。另一种方法是转义所有反斜杠。

【讨论】:

  • 感谢 COLDSPEED。 replace 方法做得很好,但问题实际上只能通过在参数字符串之前使用r 调用函数来解决,正如您所建议的那样。这只是部分令人满意,因为我不能通过变量传递函数,但总是必须在r 之后手动粘贴字符串,以获取原始字符串。至少,我认为我没有解决方案。
  • @Pauli 如果你的字符串是这样进来的,那么源就有问题。此外,没有真正的方法来制作变量原始字符串......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多