簡體   English   中英

Python在字符串中查找所有打開的括號

[英]Python Finding All Open Parentheses in a String

我正在嘗試查找字符串中所有開放括號的位置。 遵循此答案 ,我可以找到字母的位置,但是找不到括號的位置。 例如, l = [3, 4] ,但是當我嘗試查找所有內容時( error: unbalanced parenthesis

import re

s = "(Hello("
l = [m.start() for m in re.finditer('l', s)]
openp = [m.start() for m in re.finditer('(', s)]

在正則表達式中(是表示組開始的特殊字符。要匹配文字(您需要用反斜杠將其轉義或將其放入字符類中:

openp = [m.start() for m in re.finditer(r'\(', s)]

... 要么:

openp = [m.start() for m in re.finditer(r'[(]', s)]

作為更通用的解決方案,您可以使用re.escape()自動轉義字符串,以便所有字符均按字面意義進行解釋。 例如:

substr_to_find = '('
substr_locs = [m.start() for m in re.finditer(re.escape(substr_to_find), s)]

正如DSM在評論中指出的那樣,在這種情況下,您也可以使用可讀性強的列表理解代替regex:

openp = [i for i, c in enumerate(s) if c == "("]

暫無
暫無

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

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