gpt4 book ai didi

python - 从 Python 字符串中删除 u202a

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:53 24 4
gpt4 key购买 nike

我试图在 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] 无效参数:'\u202aH:\7 - Script\teste.csv'

最佳答案

当您最初创建 .py 文件时,您的文本编辑器引入了一个非打印字符。

考虑这一行:

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

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

$ python
Python 3.6.1 (default, Jul 25 2017, 12:45:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> "‪H:\\7 - Script\\teste.csv"
'\u202aH:\\7 - Script\\teste.csv'
>>>

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

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

>>> 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)

使用这样的编辑器,只需删除"H之间的字符即可。

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

尽管这行在视觉上与您的原始行完全相同,但我已删除了违规字符。使用此行将避免您报告的 OSError

关于python - 从 Python 字符串中删除 u202a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com