python移除特定字元 - 字串去除




python如何去掉第一個和最後一個雙引號 (8)

我想從中去掉雙引號

string = '"" " " ""\\1" " "" ""'

成為

string = '" " " ""\\1" " "" "'

我試圖使用rstriplstripstrip('[^\"]|[\"$]')但它不起作用。

我怎樣才能做到這一點? 感謝你們對我的幫助。


重要提示:我正在擴大提問/回答以去除單引號或雙引號。 我解釋這個問題的意思是說,這兩個引號必須存在,並匹配,以執行剝離。 否則,該字符串將保持不變。

為了“消除”一個字符串表示,它可能有單引號或雙引號(這是@ tgray答案的擴展):

def dequote(s):
    """
    If a string has single or double quotes around it, remove them.
    Make sure the pair of quotes match.
    If a matching pair of quotes is not found, return the string unchanged.
    """
    if (s[0] == s[-1]) and s.startswith(("'", '"')):
        return s[1:-1]
    return s

說明:

startswith可以採取一個元組,以匹配任何幾種選擇。 DOUBLED括號(())是為了指定允許的前綴,而不是兩個參數"'"'"' ,我們將ONE參數("'", '"')傳遞給startswith()這將被解釋為一個前綴和一個(無效的)開始位置。

s[-1]是字符串中的最後一個字符。

測試:

print( dequote("\"he\"l'lo\"") )
print( dequote("'he\"l'lo'") )
print( dequote("he\"l'lo") )
print( dequote("'he\"l'lo\"") )

=>

he"l'lo
he"l'lo
he"l'lo
'he"l'lo"

(對於我來說,正則表達式是不明顯的,所以我沒有試圖擴展@ Alex的答案。)


下面的函數將剝離空的spces並返回不帶引號的字符串。 如果沒有引號,則它將返回相同的字符串(剝離)

def removeQuote(str):
str = str.strip()
if re.search("^[\'\"].*[\'\"]$",str):
    str = str[1:-1]
    print("Removed Quotes",str)
else:
    print("Same String",str)
return str

如果你不能假設你所處理的所有字符串都有雙引號,你可以使用這樣的東西:

if string.startswith('"') and string.endswith('"'):
    string = string[1:-1]

編輯:

我確定你只是在這裡用string作為例子的變量名,在你的真實代碼中它有一個有用的名字,但我覺得有必要警告你在標準庫中有一個名為string的模塊。 它不會自動加載,但如果您曾經使用import string確保您的變量不會將其隱藏。


如果你確定有一個“在開始和結束時,你想刪除,只要做:

string = string[1:len(string)-1]

要么

string = string[1:-1]

如果您想要刪除的引號總是像您所說的那樣是“第一個和最後一個”,那麼您可以簡單地使用:

string = string[1:-1]


幾乎完成。 從http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip引用

chars參數是一個字符串,指定要刪除的字符集。

[...]

chars參數不是前綴或後綴; 相反,其值的所有組合都被剝離:

所以這個論點不是一個正則表達式。

>>> string = '"" " " ""\\1" " "" ""'
>>> string.strip('"')
' " " ""\\1" " "" '
>>> 

請注意,這不是你所要求的,因為它從字符串的兩端都吃了多個引號!


我有一些需要去掉單引號或雙引號的代碼,我不能簡單地使用ast.literal_eval它。

if len(arg) > 1 and arg[0] in ('"\'') and arg[-1] == arg[0]:
    arg = arg[1:-1]

這與ToolmakerSteve的答案類似,但它允許長度為0的字符串,並且不會將單個字符"轉換為空字符串”。


找到你的字符串中第一個和最後一個“的位置

>>> s = '"" " " ""\\1" " "" ""'
>>> l = s.find('"')
>>> r = s.rfind('"')

>>> s[l+1:r]
'" " " ""\\1" " "" "'




strip