解决python中出现的不可见字符问题,OSError: [Errno 22] Invalid argument: ‘\u202a**.csv‘

解决python中出现的不可见字符问题,OSError: [Errno 22] Invalid argument: '\u202a**.csv'

问题描述

今天遇到一个坑,读取文件时,在用到open函数时,始终报OSError: [Errno 22] Invalid argument:的错误,意思说文件路径错误。
pandas读取csv文件时,pandas自带open()运行报错误OSError: [Errno 22] Invalid argument: '\u202a**.csv。

import pandas as pd
import os

#读取csv文件并提取文件名,去除路径扩展名
csvfilename = r'F:\N49-N1120190525.csv'
basename=os.path.basename(csvfilename)
filenamex = os.path.splitext(basename)[0]
#读取csv文件
df = pd.read_csv(csvfilename, encoding = 'gbk')

报错提示pandas中open()打开指定文件路径时,文件路径不正确:

OSError: [Errno 22] Invalid argument:'\u202aF:\N49-N1120190525.csv'

在写代码的时候,有一段需要导入文件名,于是,就在文件属性->安全->对象名称处复制了。如果你是直接copy如下图的路径,可能就会遇到诸如u202a的windows不可见控制字符的巨坑
在这里插入图片描述
百度经验:像pyCharm、Spyder等平台,不能直接复制粘贴路径不然就会报和我一样的错

很多人建议:老老实实自己打一遍路径,不要在属性里面直接复制路径就行了。

但是这方法也太不符合程序员们的作风了!
下面介绍不可见字符和解决方法。

不可见控制字符

控制字符详细可参见:博主小盼你最萌哒的\u202a 神奇的控制字符:\u202a 神奇的控制字符
下面摘抄一些控制字符介绍:

可以看到在C前面有个Unicode编码为202A的字符。
在这里插入图片描述
然后搜索202A Unicode,找到这么个网站:
‪ - 从左至右嵌入 表情符号 (U+202A) - Unicode®字符百科
就是这么个字符在作怪。
网上找了些相关资料
在这里插入图片描述.在这里插入图片描述
所以这个符号应该是windows在做文件名显示的时候,为了保证文件路径是从左往右显示所加的强制字符。

解决方法

引入a = a.strip(’\u202a’)即可去除。

import pandas as pd
import os
#读取csv文件并提取文件名,去除路径扩展名
csvfilename = r'F:\N49-N1120190525.csv'
csvfilename = csvfilename.strip('\u202a')#除去不可见字符
basename=os.path.basename(csvfilename)
filenamex = os.path.splitext(basename)[0]
#读取csv文件
df = pd.read_csv(csvfilename, encoding = 'gbk')

程序可正常读取了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值