2017-06-27 26 views
0

我的狀態碼後跟一個句子。 (即「CA.」,「AL。」,但也是「CA」,「AL」)或諸如「acct」之類的東西。或沒有。」我想: 1.刪除那些「。」。 2.保持其他「。」 3.改變號碼。以#刪除Python。狀態

例如,我想: 「來自CA的J. Edgar Hoover先生欠我們$ 123.45從98765號。」 成爲 「來自CA的J. Edgar Hoover先生欠我們$ 123.45來自#98765#

更改「否」。到「#」 和「acct」。到「acct」 很容易用正則表達式或替換完成,我可以先做到這一點,以避免這些問題。 (我接受其他有效的方法)。

但是,如何更改州代碼。州代碼並保持正確的州代碼?

謝謝!

+5

我看到你正在嘗試做的,但考慮到這句話:'先生J. Edgar Hoover住在加利福尼亞州。':沒有辦法知道最後一個點是否是縮寫點或結束句子的點。 –

+1

我不同意。我認爲正則表達式可以做到:'re.sub('([A-Z]){2}。','\ 1',line)' –

+0

@CasimiretHippolyte yup。從本質上講,它變成了從縮略語來區分句子結尾的問題。這實際上是句子標記器所做的。因此,一種選擇是使用句子標記器,然後從裏面的單詞標記中去除。當然,這是不會100%的時間工作 –

回答

0

狀態碼始終包含2個大寫字母,因此您可以使用此模式來替換。

匹配這樣的: ([A-Z]{2}).

和替換本:$1

+0

謝謝@coldspeed。 test1 =「來自CA的J. Edgar Hoover先生欠我們98565美元的123.45美元。」 fix1 = re.sub(r'([A-Z] {2})。',r'\ 1',test1) fix1 –