如何删除字符之间的空格而不删除数据帧中的所有空格?

2024-10-05 15:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样一个数据帧:

ID    Name       Description
0     Manny      V e  r y calm
1     Joey       Keen and a n a l y t i c a l
2     Lisa       R a s h and careless
3     Ash        Always joyful

我想删除Description列中每个字母之间的所有空格,而不完全删除单词之间所有必要的空格。你知道吗

在熊猫身上有没有一个简单的方法?你知道吗


Tags: and数据nameiddescriptionalways空格lisa
1条回答
网友
1楼 · 发布于 2024-10-05 15:27:55

这是一个棘手的问题,但一种方法可能会让你得到大部分的方法是使用消极和积极的lookbehinds/lookaheads来编码一些基本的规则。你知道吗

考虑到您所描述的内容,下面的示例可能会很好地工作。它将错误地组合连续的“真实”单词中的字符,这些单词被分解成单独的字符,但如果这种情况很少见的话,这可能就没问题了。您可以添加其他规则来覆盖更多的边缘情况。你知道吗

import re
import pandas as pd

s = pd.Series(['V e  r y calm', 'Keen and a n a l y t i c a l',
'R a s h and careless', 'Always joyful'])

regex = re.compile('(?<![a-zA-Z]{2})(?<=[a-zA-Z]{1}) +(?=[a-zA-Z] |.$)')
s.str.replace(regex, '')

0              Very calm
1    Keen and analytical
2      Rash and careless
3          Always joyful
dtype: object

这个正则表达式实际上表示:

查找空格序列并替换空格,但前提是前面只有一个字母。如果有两个字母,不要做任何事情(例如,一个两个字母的单词)。但更具体地说,实际上只有在序列中最后一个空格后面有一个字母或任何终止字符串的字符时才替换空格。你知道吗

相关问题 更多 >