我有一个人名列表(字符串元素),其中一些人的名字中间有一个反斜杠“ \”,损坏了他们。
我想将它们过滤到外面,但是发现了难以解释的问题...
要查找\
反斜杠,我使用了.find
方法或in
,它们看起来似乎是一样的。
似乎唯一有效的参数是"\\"
,因为"\"
或r'\'
都将导致错误(转义最后的引号-> SyntaxError: EOL while scanning string literal
)>
因此,这是搜索代码:
names = ["robert", "rob\xadt", "egi\xadio"]
for name in names:
print(name.find('\\'))
这将返回-1,-1,-1(找不到内容)
我无法更改包含这些名称的输入字符串,但是,出于这个问题,如果我手动采用这些名称之一并在前面加上r
raw ,则代码有效,如下面的最后一个元素:
names = ["egi\xadio", r"egi\xadio"]
for name in names:
print(name.find('\\'))
这将返回-1,3(找到了东西!)
我尝试系统地添加原始符号r
,但没有成功,如下所示:
name = 'rob\xadt'
name = fr'{name}'
name.find('\\')
最后,下面的两个“相似”代码都找不到\
,但我想知道为什么第一个错误:
name = "rob\xar"
name.find('\\')
SyntaxError:(emcode错误)“ unicodeescape”编解码器无法解码位置3-5中的字节:\ xXX转义被截断了
name = "rob\xad"
name.find('\\')
确定
任何见解?预先感谢!
答案 0 :(得分:0)
name = r"rob\xar"
name.find('\\')
我认为这就是您想要的。 在这里,“ r”表示“原始”字符串。
字符串文字可以选择以字母'r'或'R'为前缀;这样的字符串称为原始字符串,并使用不同的规则来解释反斜杠转义序列。
ref:https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules-index-sorting.html