[英]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.