我有一個帶有拉丁數字的阿拉伯文本子字串,例如:
text = ???? ??? ??????? 550
我需要從文本中提取數字,但我正在努力使用適用于此的正則運算式。我認為數字從左到右而字母從右到左的事實給我帶來了問題......我承認我并不精通正則運算式,所以我希望這只是一個技巧我錯過了它. 以下是我嘗試過的幾件事:
re.findall(r'???? ??? ??????? \d ', text)
re.findall(r'\d ???? ??? ???????', text)
這兩個都回傳空串列。
如果我簡單地搜索re.findall(r'\d ', text)它確實會成功回傳文本中所有數字的串列,所以我很確定在同一字串中搜索阿拉伯語和拉丁語是有問題的。
我正在搜索的全文如下所示,所以如果我只搜索數字,它會回傳我不需要/不想要的東西。我還需要能夠區分識別為“???????”和“??????”的數字。文本中沒有換行符。
Text = "?? ?? ??? ?????? ??? 4/2/2022 ?????? 9:00:
???? ??? ??????? 550
???? ??? ?????? 600
???? ???? ??????? 700
???? ???? ?????? 701"
x = re.findall(r'\d ', text)
回傳
x = ['4', '2', '2022', '9', '00', '550', '600', '700', '701']
編輯:在這種情況下,我不希望有一個包含 4、2、2022、9、00 的串列。我通常可以指望我確實希望按相同順序排列的數字,但并非總是如此。我還需要確定哪個數字與哪個文本集相關聯,因為文本包含有關該數字所用貨幣的資訊(大致翻譯為第一行是“出售美元的價值是 550”)
uj5u.com熱心網友回復:
絕對理解你在混合從右到左和從左到右的意思。
以下似乎有效(突出顯示錯誤,但右側的匹配符合預期)。既然您無論如何都想區分它們,那么 2 個單獨的正則運算式怎么樣?
???????.(\d )
??????.(\d )
https://regex101.com/r/hXYNk2/1
uj5u.com熱心網友回復:
s = Text.split()
numl = [num for num in s if num.isnumeric()]
這會生成一個由每個空格分隔的“單詞”串列,然后是一個數字串列。所以不必使用正則運算式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465817.html
標籤:Python 正则表达式 阿拉伯 python-3.9
