簡體   English   中英

Python正則表達式用單反斜杠替換雙反斜杠

[英]Python regex to replace double backslash with single backslash

我試圖用一個反斜杠替換所有雙反斜杠。 我想用'class=\\\\"highlight'替換'class=\\\\"highlight' 'class=\\"highlight' 我認為 python 將'\\\\'視為一個反斜杠,將r'\\\\+'視為帶有兩個反斜杠的字符串。 但是當我嘗試

In [5]: re.sub(r'\\+', '\\', string)
sre_constants.error: bogus escape (end of line)

所以我嘗試用原始字符串切換替換字符串:

In [6]: re.sub(r'\\+', r'\\', string)
Out [6]: 'class=\\"highlight'

這不是我需要的。 所以我只在原始字符串中嘗試了一個反斜杠:

In [7]: re.sub(r'\\+', r'\', string)
SyntaxError: EOL while scanning string literal    

為什么不使用string.replace()

>>> s = 'some \\\\ doubles'
>>> print s
some \\ doubles
>>> print s.replace('\\\\', '\\')
some \ doubles

或者使用“原始”字符串:

>>> s = r'some \\ doubles'
>>> print s
some \\ doubles
>>> print s.replace('\\\\', '\\')
some \ doubles

由於轉義字符很復雜,您仍然需要對其進行轉義,以便它不會轉義'

你在字符串中只有一個反斜杠:

>>> string = 'class=\\"highlight' 
>>> print string
class=\"highlight

現在讓我們再放一個

>>> string = 'class=\\\\"highlight' 
>>> print string
class=\\"highlight

然后再次刪除它

>>> print re.sub('\\\\\\\\', r'\\', string)
class=\"highlight

我剛剛意識到這可能是最簡單的答案:

import os
os.getcwd()

以上輸出帶有\\(2個反斜杠)的路徑

但是如果你用打印函數包裝它,即print(os.getcwd())它將輸出 2 條斜線和 1 條斜線,這樣你就可以復制並粘貼到地址欄中!

只需使用 .replace() 兩次!

我有以下路徑: C:\\\\Users\\\\XXXXX\\\\Desktop\\\\PMI APP GIT\\\\pmi-app\\\\niton x5 test data

要將 \\ 轉換為單個反斜杠,我只執行了以下操作:

path_to_file = path_to_file.replace('\\','*')
path_to_file = path_to_file.replace('**', '\\')

第一個操作為每個 \\ 創建 ** ,第二個操作轉義第一個斜杠,用單個\\替換 ** 。

結果:

C:**Users**z0044wmy**Desktop**PMI APP GIT**pmi-app**GENERATED_REPORTS
C:\Users\z0044wmy\Desktop\PMI APP GIT\pmi-app\GENERATED_REPORTS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM