博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据清洗——python定位csv中的特定字符位置
阅读量:5367 次
发布时间:2019-06-15

本文共 1998 字,大约阅读时间需要 6 分钟。

      之前发过一篇关于定位csv中的特殊字符的,主要是用到了python的自带的函数,近期又遇到了一些新的问题,比如isdigit()的缺点在于不能判断浮点型,以及小数中有多个小数点的情况。发现还是正则表达式更灵活一些。

import pandas as pdimport numpy as npimport csvimport redef is_chinese(uchar):    if u'\u4e00' <= uchar <= u'\u9fff':        return True    else:        return False        csv_reader = csv.reader(open('D:/测试-清洗后数据-utf8.csv',                             encoding = 'utf-8'))                            rows = 0for row in csv_reader:    columns = 0    rows += 1    for Factor in row[0:]:        columns += 1        if not Factor.isalnum() and Factor != '' and not is_chinese(Factor) and re.match("[0-9]+\.[0-9]+$",Factor) == None:#            columns += 1            print(rows,columns,Factor)

更多的字符判断代码可以参考下面:

#!/usr/bin/env python# -*- coding:utf-8-*-# 判断一个unicode是否是汉字def is_chinese(uchar):             if '\u4e00' <= uchar<='\u9fff':        return True    else:        return False# 判断一个unicode是否是数字def is_number(uchar):    if '\u0030' <= and uchar<='\u0039':        return True    else:        return False# 判断一个unicode是否是英文字母def is_alphabet(uchar):             if ('\u0041' <= uchar<='\u005a') or ('\u0061' <= uchar<='\u007a'):        return True    else:        return False# 判断是否非汉字,数字和英文字符def is_other(uchar):    if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)):        return True    else:        return Falseif __name__=="__main__":    ustring=u'中国 人名a高频A'    # 判断是否有其他字符;    for item in ustring:        if (is_other(item)):            break

关于正则表达式的解释:

^[-+]?[0-9]+\.[0-9]+$  

^表示以这个字符开头,也就是以[-+]开头,[-+]表示字符-或者+之一,

?表示0个或1个,也就是说符号是可选的。

同理[0-9]表示0到9的一个数字,+表示1个或多个,也就是整数部分。

\.表示的是小数点,\是转义字符因为.是特殊符号(匹配任意单个除\r\n之外的字符),

所以需要转义。

小数部分同理,$表示字符串以此结尾。

 

最后,推荐一个好用的写正则的网站,用它检查正则表达式比较方便,https://regexper.com/#%5E(%5B%EF%BC%88(%5D%7C)%5B%200-9%E4%B8%80%E4%BA%8C%E4%B8%89%E5%9B%9B%E4%BA%94%E5%85%AD%E4%B8%83%E5%85%AB%E4%B9%9D%E5%8D%81%5D%2B%5B.%EF%BC%8E%E3%80%82%EF%BC%8C%E3%80%81%EF%BC%9A)%EF%BC%89%5D%2B%5B.0-9A-Z%5D%24

转载于:https://www.cnblogs.com/matrixworld/p/6772572.html

你可能感兴趣的文章
EasyUI基础入门之Pagination(分页)
查看>>
一次PHP代码上线遇到的问题
查看>>
显示密码
查看>>
实现one hot encode独热编码的两种方法
查看>>
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
jquery中的ajax方法参数的用法和他的含义
查看>>
BZOJ 1226: [SDOI2009]学校食堂Dining
查看>>
数组去重的几种方法
查看>>
包装类的自动装箱与拆箱
查看>>
ShareSDk的使用
查看>>
android使用web加载网页的js问题
查看>>
libvirt log系统分析
查看>>
poj 1068 Parencodings
查看>>
docker 数据卷管理
查看>>
adb
查看>>
Apache Tomcat部署java web项目
查看>>