首页 > 解决方案 > 如何在逗号前保留空格?

问题描述

我正在尝试从数据框中获取某个列,但由于 Python 处理字符串的方式,我不能。我的问题是 Python 会自动删除逗号前的空格。例如,我要获取的列是“侵袭性肺炎球菌病,年龄 LT 5†,可能”,但 Python 会将其处理为“侵袭性肺炎球菌病,年龄 LT 5†,可能”,因此我无法访问它给定的列。由于其他复杂情况,我不能简单地更改列名。有没有一种方法可以强制 Python 保持我的字符串不变而不删除那个空格?

输入:

df["Invasive Pneumococcal Disease, Age LT 5† , Probable"]

输出:

'Invasive Pneumococcal Disease, Age LT 5†, Probable'

标签: pythonstring

解决方案


(([^\x00-\x7F]|\w)+)这将找到所有 Unicode 和 ASCII 单词。

所以逻辑是,找到所有 ASCII/Unicode 单词,它们有一个文字空格\s,后跟一个逗号,然后又是一个文字 whitespace \s,在发现用逗号后跟一个空格替换第一个捕获的组之后。

用于查找上述内容的正则表达式。

这是代码:

import re
str = "Invasive Pneumococcal Disease, Age LT 5† , Probable"

def normalize_comma_endings(matchobj):
    ascii_unicode_words_pattern = r"(([^\x00-\x7F]|\w)+)"
    base_word = re.findall(ascii_unicode_words_pattern, matchobj.group(1))
    return "{}, ".format(base_word[0][0])


comma_endings_pattern = r"(([^\x00-\x7F]|\w)+\s,\s)"
res = re.sub(comma_endings_pattern, normalize_comma_endings, str)
print(res)

推荐阅读