为了账号安全,请及时绑定邮箱和手机立即绑定

类整数字符串中的隐藏字符

类整数字符串中的隐藏字符

回首忆惘然 2022-01-05 12:24:43
我刮的数据来自网络募捐,并把它插入表中。当我开始清理数据时,我看到某些元素,例如“2 000000”,被机器读取为“2\xa0000000”。1/ 那是什么意思?2/ 我怎样才能删除它?(因为我想将整列转换为整数)最好的,
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

要修复DataFrame列,请使用:

df['col'] = df['col'].str.replace('\D', '').astype(int)


查看完整回答
反对 回复 2022-01-05
?
富国沪深

TA贡献1790条经验 获得超9个赞

问题是您将转义序列作为字符串中的 Unicode 字符读入。删除这些字符而不在每个特定显示上使用替换的最简单方法是使用unicodedata包。


具体来说:


from unicodedata import normalize


string1 = "2\xa0000000"


new_string = normalize('NFKD', string1)


print(new_string)

输出:


2 000000 

这个包已经内置到我的机器中,但是如果你使用与我不同的方法来构建你的 python 包,你可能需要安装它。我觉得这更好,因为这种规范化适用于很多不同的格式,所以你不需要每次看到格式不正确的其他内容时使用替换。这是一个转义序列


查看完整回答
反对 回复 2022-01-05
?
达令说

TA贡献1821条经验 获得超6个赞

十六进制代码的字符A0是不间断空格。可以这么说,在大多数情况下,您可以将其视为一个空间。根据我的经验,当我处理一些从 Microsoft Office 产品生成的数据时,或者当人们将 HTML 代码 放在上面时从 Web 中生成的数据,它通常会出现。

不幸的是,python split()(例如,我不知道您如何处理数据)不会将其视为空间。但由于它只是一个独特的角色,您可以通过以下方式解决问题:

longstring.replace('\xA0', ' ').split()

PS:再次阅读您的问题,似乎应该忽略将数字 200 万作为数据实体。所以你可能想'\xA0'用空字符串替换。


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信