数据清洗——python定位csv中的特定字符位置
之前发过一篇关于定位csv中的特殊字符的,主要是用到了python的自带的函数,近期又遇到了一些新的问题,比如isdigit()的缺点在于不能判断浮点型,以及小数中有多个小数点的情况。发现还是正则表达式更灵活一些。
import pandas as pd
import numpy as np
import csv
import re def 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 = 0
for 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 False if __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
数据清洗——python定位csv中的特定字符位置的更多相关文章
- ref:如何在大量jar包中搜索特定字符
ref:https://www.cnblogs.com/jiangxinnju/p/5137760.html?utm_source=tuicool&utm_medium=referral 如何 ...
- Python字符串中删除特定字符
分析 在Python中,字符串是不可变的.所以无法直接删除字符串之间的特定字符. 所以想对字符串中字符进行操作的时候,需要将字符串转变为列表,列表是可变的,这样就可以实现对字符串中特定字符的操作. 1 ...
- 如何在大量jar包中搜索特定字符
欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...
- python 提取字符串中的指定字符 正则表达式
例1: 字符串: '湖南省长沙市岳麓区麓山南路麓山门' 提取:湖南,长沙 在不用正则表达式的情况下: address = '湖南省长沙市岳麓区麓山南路麓山门' address1 = address.s ...
- python 读取csv中的文件,从sftp下载文件
需要从sftp上下载一些图片文件,文件名存放在一个csv文件中.代码如下: # -*- coding:utf-8 -*- import paramiko import csv import os de ...
- Python统计字符串中的中英文字符、数字空格,特殊字符
# -*- coding:utf8 -*- import string from collections import namedtuple def str_count(s): '''找出字符串中的中 ...
- Python解析CSV中的多维字典
CSV文件结构如下,其中字段A为唯一 代码如下,Python27 with open(file_obj+'TEST.CSV','r') as f: #转为字典 Reader=csv.DictReade ...
- 使用POI替换word中的特定字符/文字改进版
package com.xfzx.test.POI.main; import java.io.File; import java.io.FileInputStream; import java.io. ...
- ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中
# -*- coding: utf-8 -*- import math import re import csv import repr def ean_checksum(eancode): &quo ...
随机推荐
- codeforces 372 Complete the Word(双指针)
codeforces 372 Complete the Word(双指针) 题链 题意:给出一个字符串,其中'?'代表这个字符是可变的,要求一个连续的26位长的串,其中每个字母都只出现一次 #incl ...
- IIS301重定向:将不带www的域名跳转到带www上
首先你的域名有这两条解析记录 进入服务器IIS,添加2个站点,如下图 第一个正常绑定你的域名:www.baidu.com 第二个绑定不带www的域名:baidu.com 然后点开ncgd-no-www ...
- 小a和uim之大逃离(洛谷 1373)
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- spring-quartz定时器简单用法
基本配置: 1.quartz.properties #============================================================== #Configure ...
- [bzoj1613][Usaco2008 Jan]Running贝茜的晨练计划_动态规划
Running贝茜的晨练计划 bzoj-1613 Usaco-2008 Jan 题目大意:题目链接(U组题题意真的是没法概括qwq....). 注释:略. 想法:一眼dp题. 状态:dp[i][j]表 ...
- MyBatis3-以接口方式编程
以下内容引用自http://www.yihaomen.com/article/java/304.htm,不过内容有修改: 继前一篇文章http://www.cnblogs.com/EasonJim/p ...
- Android开发系列(二十四):Notification的功能与使用方法
关于消息的提示有两种:一种是Toast,一种就是Notification.前者维持的时间比較短暂.后者维持的时间比較长. 并且我们寻常手机的应用比方网易.贴吧等等都有非常多的推送消息,就是用Notif ...
- Unity3d代码从Android/IOS迁移到WindowsPhone经验笔记
[1搭建坏境] 推荐:Windows 8.1 Enterprise + Visual studio 2013(完整安装) PS: 假设要Visual Studio 2012,先安装VS再安装WP8/W ...
- jsp,velocity,freemark页面引擎的比較
在java领域.表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术 长处: 1.功能强大,能够写java代码 2.支持jsp标签(jsp tag) 3.支 ...
- Magento 模块开发之DispatchEvent
在这一章节中.我们来了解 Magento 中的事件分发机制 Mage::dispatchEvent() 在创建自己的模块时, Event 事件的分发将会变成十分实用且有效 以个人的经验. 事件的分发使 ...