簡體   English   中英

需要使用 python 刪除字符串數組中的引號

[英]Need to remove quotes inside the array of a string using python

input = "'Siva', ['Aswin','latha'], 'Senthil',['Aswin','latha']" 

預期 output:

"'Siva', [Aswin,latha], 'Senthil',[Aswin,latha]"

我已經使用了積極的后視和前瞻,但它不起作用。

圖案

(?<=\[)\'+(?=\])

我們可以在這里使用re.sub和回調 lambda function:

inp = "'Siva', ['Aswin','latha'], 'Senthil',['Aswin','latha']"
output = re.sub(r'\[.*?\]', lambda x: x.group().replace("'", ""), inp)
print(output)

這打印:

'Siva', [Aswin,latha], 'Senthil',[Aswin,latha]
import re
input = "'Siva', ['Aswin','latha'], 'Senthil',['Aswin','latha']"


print(re.sub(r"(?<=\[).*?(?=\])", lambda val: re.sub(r"'(\w+?)'", r"\1", val.group()), input))

# 'Siva', [Aswin,latha], 'Senthil',[Aswin,latha]

如果您不想import re ,可以嘗試這樣的事情:

X = eval("'Siva', ['Aswin','latha'], 'Senthil',['Aswin','latha']")
Y = []
for x in X:
    Y.append(f"[{', '.join(x)}]" if isinstance(x, list) else f"'{x}'")
print(", ".join(Y))

您可以使用帶有交替模式的re.findall來查找][之間的片段,或者其他非單引號字符,然后將片段與''.join連接在一起:

''.join(re.findall(r"[^\]]*\[|\][^\[]*|[^']+", input))

演示: https://replit.com/@blhsing/ClassicFrostyBookmark

這通常比使用帶有回調的re.sub更有效,因為為每個匹配項進行回調會產生開銷。

暫無
暫無

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

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