2017-06-27 118 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 –