[英]remove curly braces from string in python using regex
我想要一個正則表達式來搜索logger.error("pbType",
並排除帶有{}
的示例,例如:
logger.info("URL:\n\"{}\"\n",
這對我re.search('.*logger.*"[\\w.:-_()\\[\\]]*"\\s*,',line)
它以{}
返回行。 請幫忙謝謝
讓我們看看您當前的正則表達式如何解析有問題的行:
.*|logger| .* |"|[\w.:-_()\[\]]*|"|\s*|,
| | | | | | |
|logger|.info("URL:\n\"{}\|"|\n |"| |,
它在正則表達式中將第三個引號用作第一個引號。
要解決此問題,您需要確保".*"
不會比您希望的更多。
[^"\n]*logger[^"\n]*"[\w.:-_()\[\]]*"\s*,
另外,您當前的正則表達式中還有其他一些錯誤:
[ :-_ ]
包括ASCII范圍在58到95之間的所有字符。如果要在字符集中包含減號,則必須排在前面。
[-\w.:_()\[\]]
將原始字符串用於正則表達式是一種很好的樣式,因為您知道反斜杠將是反斜杠而不是觸發轉義序列。
re.search(r'...', line)
您要確保"\\s*,
確實得到了字符串的末尾,可能有一個\\",{}
沒被抓住的末尾,因此請匹配正則表達式中的行尾...$
總之,這些建議將使您的代碼行:
re.search(r'[^"\n]*logger[^"\n]*"[-\w.:-()\[\]]*"\s*,$', line)
只要做一個if。 無需正則表達式-
for i in l1:
if not("{}" in i):
l2.append(i)
考慮到l1是您的字符串列表,l2是必需的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.