从Python字符串中删除u202a

2024-09-27 21:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python打开一个文件,但是遇到了一个错误,在字符串的开头我得到了一个/u202a字符。。。有人知道怎么把它取下来吗?在

def carregar_uml(arquivo, variaveis):
    cadastro_uml = {}
    id_uml = 0

    for i in open(arquivo):
        linha = i.split(",")


carregar_uml("‪H:\\7 - Script\\teste.csv", variaveis)

OSError: [Errno 22] Invalid argument: '\u202aH:\7 - Script\teste.csv'


Tags: 文件csv字符串def错误script字符uml
3条回答

最初创建.py文件时,文本编辑器引入了非打印字符。在

考虑这一行:

carregar_uml("‪H:\\7 - Script\\teste.csv", variaveis)

让我们仔细选择字符串(包括引号),并将其复制粘贴到交互式Python会话中:

^{pr2}$

如您所见,在H之前有一个代码点为U-202A的字符。在

正如其他人指出的,代码点U-202A的字符是LEFT-TO-RIGHT EMBEDDING。回到我们的Python会话:

>>> s = "‪H:\\7 - Script\\teste.csv"
>>> import unicodedata
>>> unicodedata.name(s[0])
'LEFT-TO-RIGHT EMBEDDING'
>>> unicodedata.name(s[1])
'LATIN CAPITAL LETTER H'
>>> 

这进一步确认字符串中的第一个字符不是H,而是非打印LEFT-TO-RIGHT EMBEDDING字符。在

我不知道你用什么文本编辑器来创建你的程序。即使我知道,我可能不是那个编辑的专家。不管怎样,你使用的一些文本编辑器插入,你不知道,U+202A

一种解决方案是使用文本编辑器,它不会插入该字符,并且/或将突出显示非打印字符。例如,在vim中,该行显示如下:

carregar_uml("<202a>H:\\7 - Script\\teste.csv", variaveis)

使用这样的编辑器,只需删除"和{}之间的字符。在

carregar_uml("H:\\7 - Script\\teste.csv", variaveis)

即使这一行在视觉上与你原来的一行完全相同,我还是删除了这个冒犯的字符。使用这一行将避免您报告的OSError。在

问题是文件的目录路径没有正确读取。使用原始字符串将其作为参数传递,它应该可以工作。在

carregar_uml(r'H:\7 - Script\teste.csv', variaveis)

您可以使用此示例代码从文件路径中删除u202a

st="‪‪F:\\somepath\\filename.xlsx"    
data = pd.read_excel(st)

如果我试图这样做,它会给我一个错误 细节

^{pr2}$

但如果我这样做的话

    st="‪‪F:\\somepath\\filename.xlsx" 
    data = pd.read_excel(st.strip("‪u202a")) #replace your string here

它对我有用

相关问题 更多 >

    热门问题