python - 新行字符导致文本清理期间单词分解

标签 python python-3.x whitespace data-cleaning removing-whitespace

我正在尝试使用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-\nsuredper-\nson 已被正确清理,但单词 as\nanin\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\nanin\nwriting 已被清理,但这会弄乱 in-\nsuredper -\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/

相关文章:

python - 尝试使用网络摄像头时,yolo编译出现问题

python - collections.abc 的实现不一致

Ruby erb 模板删除了过多的空格

python - torch softmax : What dimension to use?

python - "' DataFrame ' object has no attribute ' 尝试应用 lambda 以创建新列时应用 '"

linux - Python查找最近的文件并获取大小

python - 为什么生成随机数时迭代次数很重要?

带有多个参数的 Python 打印与打印 fstring

visual-studio-2010 - Visual Studio 2010双击以选择空白过于激进

jsp - 避免 JSTL c :set statement 中的空格