我正在尝试使用Python清理一些文本以供进一步使用。下面是一个输入文本示例:
已同意-\n以书面形式\n在契约(Contract)或协议(protocol)中保证\n
现在我希望输出是:
已在契约(Contract)或协议(protocol)中以书面形式同意受保人
但是空白导致了问题。我尝试了两种不同的逻辑来实现所需的输出,但一个适用于某些单词,不适用于其他单词,第二个逻辑适用于某些单词,但不适用于其他单词>.
这是我尝试过的两种逻辑:-
逻辑1:-
x =“已在契约(Contract)或协议(protocol)中书面同意\n确保\n”
#remove everything except alphabets and whitespaces
v = re.sub(r"[^\w\s.?!]", "", v)
#remove single whitespaces
v = v.replace("\n", "")
#remove extra whitespaces
v = re.sub(r"\s+", " ", v, flags=re.I)
这会产生以下输出:
在契约(Contract)或协议(protocol)中书面同意被保险人为个人
如您所见,单词 in-\nsured
、per-\nson
已被正确清理,但单词 as\nan
和in\nwriting
尚未清理。因此,为了解决这个问题,我尝试了以下逻辑:
逻辑2:-
v = re.sub(r"[^\w\s.?!]", "", v)
v = v.replace("\n", " ") <----This line has been changed (" " instead of "")
v = re.sub(r"\s+", " ", v, flags=re.I)
这给出了以下输出:
已在契约(Contract)或协议(protocol)中以书面形式同意被保险人
单词 as\nan
和 in\nwriting
已被清理,但这会弄乱 in-\nsured
和 per -\nson
单词。
如何解决这个问题?
提前致谢!
最佳答案
通过简单的字符串替换,这似乎很容易。连字符后跟换行符是单个单词,因此只需删除它们即可。然后任何其他剩余的换行符都可以被空格替换。因此:
s = 'have agreed in-\nsured as\nan per-\nson in\nwriting in a contract or agreement'
fixed = s.replace('-\n', '').replace('\n', ' ')
# 'have agreed insured as an person in writing in a contract or agreement'
关于python - 新行字符导致文本清理期间单词分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76495909/