【问题标题】:How to replace all instances of "\/" with "/" in a string?如何用字符串中的“/”替换所有“\/”实例?
【发布时间】:2018-01-15 23:54:21
【问题描述】:

所以我有一个奇怪的链接,例如:

https\/\/blahblah.com\/path\/example

我想要做的是将每个 "\/" 替换为 "/"

当我尝试时

re.sub("\/", "/", soup)

它不会改变任何东西。任何帮助表示赞赏,谢谢。

【问题讨论】:

  • 这里的\ 转义了正斜杠。因此,要么使用原始字符串,要么转义反斜杠本身。
  • re.sub(r"\/", "/", soup)
  • 也许`\`在正则表达式中有特殊含义。
  • 你必须转义反斜杠
  • 要添加到之前的 cmets:"\/" 实际上是 "/"

标签: python regex string python-3.x replace


【解决方案1】:

两件事:

  • 制作正则表达式模式原始字符串,这样 Python 就不会进行任何解释并将其传递给 re 原样

  • \ 转义\;否则只是\/ 转义/ 什么都不改变,因为/ 不需要转义。因此,您将 / 替换为 /

所以,使用:

re.sub(r"\\/", "/", soup)

示例:

In [157]: s
Out[157]: 'https\\/\\/blahblah.com\\/path\\/example'

In [158]: re.sub(r"\\/", "/", s)
Out[158]: 'https//blahblah.com/path/example'

In [159]: s = 'https:\/\/dog.ceo\/api\/img\/labrador\/n02099712_7775.jpg'

In [160]: re.sub(r"\\/", "/", s)
Out[160]: 'https://dog.ceo/api/img/labrador/n02099712_7775.jpg'

【讨论】:

    【解决方案2】:

    我无法真正告诉您为什么 re.sub 不适用于您的情况,尽管我怀疑“/”的转义字符解释存在问题。

    然而,

    s = 'https:\/\/blahblah.com\/path\/example'
    s.replace('\/','/')
    

    我认为你想为我做的事。

    【讨论】:

      【解决方案3】:

      您可以使用 split('\') 方法对字符串进行拆分,然后将列表元素连接到单个字符串中,以便替换反斜杠

      ''.join(weird_string.split('\\')
      

      【讨论】:

        【解决方案4】:

        mystring.replace("/", "\ /") 它为我工作

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-16
          • 1970-01-01
          • 2014-03-14
          • 1970-01-01
          • 2011-09-29
          • 1970-01-01
          • 2017-09-04
          • 1970-01-01
          相关资源
          最近更新 更多