簡體   English   中英

Python Regex re.sub在For循環中不起作用

[英]Python Regex re.sub not working in For loop

我無法用編輯后的文本替換特定模式的特定出現。 我已經使用了for ... loop來提出如何獲得特定模式的出現,但是我無法在re.sub語句中使用它。

這是我的Python 2代碼:

def split(content):
    count = 0
    s = ""
    for i in re.finditer(r'(?s)(\\thinhline\n\\\\\[-16pt]\n)([a-zA-Z\s\(\)]+)(.*?)(\n *\\\\)', content):
        count= count + 1
        x =  len(re.findall('^\s*&', i.group(3), re.M))
        if x < 6:
            break
        elif x >= 6:
            g = normalizationConstraints(i.group(3),i.group(2)) + "\n"
            s = str(g) + "\n"
            content = re.sub(i,s,content)
    return content

錯誤就在網上:

         content = re.sub(i,s,content)

由於變量“ i”顯然不是正則表達式。

錯誤:

TypeError: first argument must be string or compiled pattern

我該如何解決這個問題?

謝謝。

我不確定您想要什么,但是錯誤告訴您正確的事情: i不是正則表達式模式。 re.finditer返回的迭代器MatchObject在這種情況下S,大概字符串。 re.sub將正則表達式模式作為其第一個參數。

根據您要使用此代碼實現的目的,您可能需要使用與re.sub不同的函數,或者需要提供實際的正則表達式。 如果您可以提供有關目標的更多詳細信息(也許是基於一些示例輸入的預期輸出,如@ 200_success所示),那將會有所幫助。

暫無
暫無

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

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