python创建变量revenue_Python:使用pandas从CSV文件中删除非ascii字符

在处理utf-8编码的CSV文件时,遇到含有非ASCII字符的短信数据。使用pandas读取数据并展示如何通过`str.isalnum()`或正则表达式`[^x00-x7F]+`过滤掉非字母数字或非ASCII字符的行,以保留英文内容。
摘要由CSDN通过智能技术生成

我有一个utf-8编码的文本短信的csv文件.

import pandas as pd

data = pd.read_csv('my_data.csv', sep=',')

data.head()

它的输出如下:

id city department sms category

01 khi revenue quk respns. 1

02 lhr revenue good. 1

03 lhr revenue †h\0h2h\0hh\ 0

04 isb accounts ?xœ1øiûüð÷üœç8i 0

05 isb accounts %â¡ã‘ã¸$ãªã±t%rã«ãÿã©â£ 0

我想删除sms列中有垃圾值的所有记录/行,例如记录3,4和5.可能它们是用英语以外的语言编写的我不太确定这些记录发生了什么.记录1和2可以保留,尽管短信列中使用的语言是非正式的(正如人们通常在短信中所做的那样).鉴于我有大约200万条记录,实现这一目标的方便方法是什么.

编辑:

我想在sms列中删除任何带有非ascii字符的行.

最佳答案 使用

str.isalnum过滤非字母数字的行:

In[46]:

df[df['sms'].str.isalnum()]

Out[46]:

id city department sms category

0 1 khi revenue quk respns. 1

1 2 lhr revenue good. 1

更新

如果你真的想要过滤掉任何包含非ascii字符的行,那么你可以使用正则表达式模式:

In[72]:

df[~df['sms'].str.contains(r'[^\x00-\x7F]+')]

Out[72]:

id city department sms category

0 1 khi revenue quk respns. 1

1 2 lhr revenue good. 1

所以正则表达式模块'[^\x00-\x7F]+'在这里查找ascii范围内的十六进制值,最高可达128(7f),因此它会查找0-128范围内的字符(不包括128),我们使用^来取消它,以便它正在寻找存在在文本的任何地方使用非ascii,我们使用〜来反转这个掩码并使用它来掩盖df

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值