我正在嘗試從網路抓取中清理一些資料。
這是我正在使用的資訊的一個示例:
Best Time
Adam Jones (w/ help) (6:34)Best Time
Kenny Gobbin (a) (2:38)Personal Best
Matt Herrera (12:44)No-record
Nick Elizabeth (19:04)
這是我想要實作的一個例子:
Best Time
Adam Jones (w/ help) (6:34)
Best Time
Kenny Gobbin (2:38)
Personal Best
Matt Herrera (12:44)
No-record
Nick Elizabeth (19:04)
我想在每個右括號之后添加兩個新行,但是由于時代不同,我不知道如何搜索和替換它。此外,數字有時可能會出現在時間之外。
我最接近的是通過用冒號在括號內搜索數字來分隔它們,但我不知道如何用相同的資訊替換它。
re.sub(r"\([0-9] :[0-9] \)", "\n\n", result)
有誰知道我怎么能做到這一點?
uj5u.com熱心網友回復:
您可以按照自己的方式進行,只需進行最小的更改。您只需要了解分組并添加\g<0>正確的befor \n\n。您可以在有關搜索和替換部分的官方檔案中閱讀它。
re.sub(r"\([0-9] :[0-9] \)", "\g<0>\n\n", result)
在這里,我使用第 0 組(中的匹配項())再次插入它。每組()是一組,從左到右從 0 開始計數。
uj5u.com熱心網友回復:
請注意,您需要插入兩個換行符的位置位于結束括號和字母字符之間。因此,您可以使用:
re.sub(r"\)([A-Za-z])", r")\n\n\1", data)
例如:
import re
data = """Best Time
Adam Jones (w/ help) (6:34)Best Time
Kenny Gobbin (a) (2:38)Personal Best
Matt Herrera (12:44)No-record
Nick Elizabeth (19:04)"""
result = re.sub(r"\)([A-Za-z])", r")\n\n\1", data)
print(result)
輸出:
Best Time
Adam Jones (w/ help) (6:34)
Best Time
Kenny Gobbin (a) (2:38)
Personal Best
Matt Herrera (12:44)
No-record
Nick Elizabeth (19:04)
以下是它如何作業的解釋:
對于我們試圖匹配的運算式,我們有r"\)([A-Za-z])":
\)匹配文字結束括號。[A-Za-z]匹配單個字母字符。- 用括號
[A-Za-z]括起來使它成為我們稍后提到的捕獲組。
對于替換運算式,我們有r")\n\n\1":
)\n\n添加一個結束括號和兩個新行。\1指的是前面的捕獲組。直觀地說,我們在結束括號后立即捕獲字母字符,然后將相同的字符添加回替換運算式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451880.html
上一篇:如何在單詞中拆分文本,保留標點符號但沒有符號:“'”
下一篇:在字串串列中查找重要關鍵字
