python - 删除空格不起作用 - 编码问题?
python - removing whitespaces not working - encoding issue?
我有一个数据集,其中包含从房地产代理机构抓取的数据。
我想从特殊字符(€、m² 等)中清除变量,删除空格并将它们转换为整数。
例如,我有这些价格(Prix de vente)和尺寸(表面可居住):
我设法用以下方法从价格变量中去掉“€”:
data["Prix de vente"] = data["Prix de vente"].str.strip("€")
然而,这两种技术中的 none 可以删除空格
data["Prix de vente"] = data["Prix de vente"].str.strip()
data["Prix de vente"] = data["Prix de vente"].replace(" ","")
我一直有:
540 000
900 000
890 000
900 000
900 000
...
我觉得这是由于我的数据编码方式所致。那会是问题吗?如果是这样,我该如何处理?
我正在使用 jupyter 笔记本。
你可以做到
data["Prix de vente"] = data["Prix de vente"].str.replace("\s","", regex=True)
匹配 "\s"
结合 regex=True
而不是 " "
确保不仅匹配常规空格而且匹配 any whitespace character
更多背景:
你的第一个方法
data["Prix de vente"] = data["Prix de vente"].str.strip()
不起作用,因为 .strip() 仅删除前导和尾随字符。
你的第二种方法
data["Prix de vente"] = data["Prix de vente"].replace(" ","")
不起作用,因为它使用的不是 str.replace,而是 pd.Series.replace,它仅替换值的精确匹配(例如“900 000”)。
有通常的方式(但是很丑):
data["Prix de vente"] = "".join(data["Prix de vente"].str.split())
它是如何工作的?
字符串方法 split()
将在 white spaces 上拆分字符串。通用 white spaces,因此不仅 " "
,还有 "\t"
、"\u00a0"
等。
然后你再次加入子字符串,没有任何 spaces。
所以你删除了 spaces(不是很直观,但这种方法经常使用,有时只是为了规范化 spaces)。
为什么这有效,但不是您的解决方案?
一些语言环境使用 NBSP(非中断 space,\u00A0)而不是标准的 spaces 来写数字和货币,这更明智(避免在数字组之间换行)。此外,一些格式化程序可能会在这种情况下使用其他类型的 spaces(例如小 spaces),因此解决方案应该关心处理所有不同的白色 spaces.
我有一个数据集,其中包含从房地产代理机构抓取的数据。 我想从特殊字符(€、m² 等)中清除变量,删除空格并将它们转换为整数。 例如,我有这些价格(Prix de vente)和尺寸(表面可居住):
我设法用以下方法从价格变量中去掉“€”:
data["Prix de vente"] = data["Prix de vente"].str.strip("€")
然而,这两种技术中的 none 可以删除空格
data["Prix de vente"] = data["Prix de vente"].str.strip()
data["Prix de vente"] = data["Prix de vente"].replace(" ","")
我一直有:
540 000
900 000
890 000
900 000
900 000
...
我觉得这是由于我的数据编码方式所致。那会是问题吗?如果是这样,我该如何处理? 我正在使用 jupyter 笔记本。
你可以做到
data["Prix de vente"] = data["Prix de vente"].str.replace("\s","", regex=True)
匹配 "\s"
结合 regex=True
而不是 " "
确保不仅匹配常规空格而且匹配 any whitespace character
更多背景:
你的第一个方法
data["Prix de vente"] = data["Prix de vente"].str.strip()
不起作用,因为 .strip() 仅删除前导和尾随字符。
你的第二种方法
data["Prix de vente"] = data["Prix de vente"].replace(" ","")
不起作用,因为它使用的不是 str.replace,而是 pd.Series.replace,它仅替换值的精确匹配(例如“900 000”)。
有通常的方式(但是很丑):
data["Prix de vente"] = "".join(data["Prix de vente"].str.split())
它是如何工作的?
字符串方法 split()
将在 white spaces 上拆分字符串。通用 white spaces,因此不仅 " "
,还有 "\t"
、"\u00a0"
等。
然后你再次加入子字符串,没有任何 spaces。
所以你删除了 spaces(不是很直观,但这种方法经常使用,有时只是为了规范化 spaces)。
为什么这有效,但不是您的解决方案?
一些语言环境使用 NBSP(非中断 space,\u00A0)而不是标准的 spaces 来写数字和货币,这更明智(避免在数字组之间换行)。此外,一些格式化程序可能会在这种情况下使用其他类型的 spaces(例如小 spaces),因此解决方案应该关心处理所有不同的白色 spaces.