【问题标题】:Python remove . after statePython 删除 .状态后
【发布时间】:2017-06-27 19:40:07
【问题描述】:

我的句子带有州代码,后跟 . (即“CA.”、“AL.”,但也有好的“CA”、“AL”)或诸如“acct”之类的东西。或没有。” 我想: 1.删​​除那些“。” 2.保留其他“.” 3.更改号码。 #

例如,我想: “来自加利福尼亚州的 J. Edgar Hoover 先生欠我们 123.45 美元,账户号为 98765。” 成为 “来自加州的 J. Edgar Hoover 先生欠我们 123.45 美元,账户号为 98765。”

更改“不”。到 ” #” 和“帐户”。 “记账” 使用正则表达式或替换很容易完成,我可以先这样做以消除这些问题。 (我愿意接受其他有效的方法)。

但是如何更改状态代码。状态代码并保持正确的状态代码?

谢谢!

【问题讨论】:

  • 我明白你在做什么,但考虑一下这句话:Mr. J. Edgar Hoover lives in CA.:没有办法知道最后一个点是缩写点还是句子结尾的点。
  • 我不同意。我认为正则表达式可以做到:re.sub('([A-Z]){2}.', '\1', line)
  • @CasimiretHippolyte 是的。那么,从本质上讲,它变成了一个从缩写词中消除句子结尾歧义的问题。这基本上就是句子标记器所做的。所以一种选择是使用句子标记器,然后从里面的单词标记中剥离。当然,这不会 100% 有效
  • 那里有很多 NLP 包,我认为当前的代码编写请求可以关闭。

标签: python regex str-replace


【解决方案1】:

状态代码始终包含 2 个大写字符,因此您可以使用此模式进行替换。

匹配这个: ([A-Z]{2}).

并替换为:$1

【讨论】:

  • 谢谢@coldspeed。 import re test1 = "来自加利福尼亚州的 J. Edgar Hoover 先生欠我们 123.45 美元,账户号为 98765。" fix1 = re.sub(r'([A-Z]{2}).', r'\1', test1) fix1
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 2013-07-22
  • 2022-01-13
  • 2011-02-20
  • 1970-01-01
  • 2020-10-21
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多