难以在字符串中搜索并找到特殊的“ \”字符吗?

时间:2019-09-25 16:29:34

标签: python string

我有一个人名列表(字符串元素),其中一些人的名字中间有一个反斜杠“ \”,损坏了他们。

我想将它们过滤到外面,但是发现了难以解释的问题...

要查找\反斜杠,我使用了.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('\\')

确定

任何见解?预先感谢!

1 个答案:

答案 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