我的目標是提取一組括號之間的子字串,但前提是它以數字開頭。有幾個字串會有多組括號,但只有一個會包含以數字開頭的字串。
目前,它正在提取第一個括號和最后一個括號之間的所有內容,而不是看到 2 個單獨的集合。
至于僅使用帶有以數字開頭的子字串的括號,我什至不知道如何處理這個問題。
任何幫助表示贊賞。
import pandas as pd
cols = ['a', 'b']
data = [
['xyz - (4 inch), (four inch)', 'abc'],
['def', 'ghi'],
['xyz - ( 5.5 inch), (five inch)', 'abc'],
]
df = pd.DataFrame(data=data, columns=cols)
df['c'] = df['a'].str.extract("\((.*)\)")
期望的輸出:
a b c
0 xyz - (4 inch), (four inch) abc 4 inch
1 def ghi NaN
2 xyz - ( 5.5 inch), (five inch) abc NaN
電流輸出:
a b c
0 xyz - (4 inch), (four inch) abc 4 inch), (four inch
1 def ghi NaN
2 xyz - ( 5.5 inch), (five inch) abc 5.5 inch), (five inch
uj5u.com熱心網友回復:
以下模式應該可以完成這項作業:\((\d[^.)] )\)
它的作用是
- 匹配字符 '('
- 開始捕獲數字和不包含“)”或“。”的所有內容。
- 結束捕獲。
- 匹配字符 ')'
你可以在regex101上看到詳細的解釋
最終代碼:
import pandas as pd
cols = ['a', 'b']
data = [
['xyz - (4 inch), (four inch)', 'abc'],
['def', 'ghi'],
['xyz - ( 5.5 inch), (five inch)', 'abc'],
]
df = pd.DataFrame(data=data, columns=cols)
df['c'] = df['a'].str.extract("\((\d[^.)] )\)")
print(df)
生成的輸出:
a b c
0 xyz - (4 inch), (four inch) abc 4 inch
1 def ghi NaN
2 xyz - ( 5.5 inch), (five inch) abc NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/491476.html
上一篇:如何使用sequelizenodejs在30天后更新mysql中的訂單狀態
下一篇:匹配最近/上個月的正則運算式
