我有一个简单的问题。 我正在尝试使用以下方法在
'greenland.gdb\topology_check\t_buildings'
处拆分字符串 S : '\'
:
S.split('\')
我期望输出列表:
['greenland.gdb', 'topology_check', 't_buildings'].
相反,它返回错误:
SyntaxError: EOL while scanning string literal
。 python 中的字符“\”是什么?与任何其他角色一起工作都很好。
您需要转义反斜杠:
S.split('\\')
您可能还需要 string_escape:
In [10]: s = 'greenland.gdb\topology_check\t_buildings'
In [11]: s.split("\\")
Out[11]: ['greenland.gdb\topology_check\t_buildings']
In [12]: s.encode("string_escape").split("\\")
Out[12]: ['greenland.gdb', 'topology_check', 't_buildings']
\t
将被解释为制表符,除非您使用原始字符串:
In [18]: s = 'greenland.gdb\topology_check\t_buildings'
In [19]: print(s)
greenland.gdb opology_check _buildings
In [20]: s = r'greenland.gdb\topology_check\t_buildings'
In [21]: print(s)
greenland.gdb\topology_check\t_buildings
您需要首先使用原始字符串,'r'或'R',如下所示:
In [01]: s = r'greenland.gdb\topology_check\t_buildings'
然后拆分,同时记住避开反斜杠
In [02]: s.split('\\')
Out [02]: ['greenland.gdb', 'topology_check', 't_buildings']
要么转义特殊字符(允许您匹配 像“*”、“?”等字符),或者表示特殊的 顺序;下面讨论特殊序列。\
如果您不使用原始字符串来表达模式,请记住 Python 还使用反斜杠作为字符串中的转义序列 文字;如果 Python 的解析器无法识别转义序列, 反斜杠和后续字符包含在结果中 细绳。然而,如果 Python 能够识别结果序列, 反斜杠应重复两次。这很复杂而且很难 理解,所以强烈建议您使用原始字符串 除了最简单的表达之外的所有表达。
反斜杠 \ 是一个特殊字符,我也不喜欢魔法,但是,
在这种情况下(对于 python 2.7 和 python 3 ):
>>> s = 'greenland.gdb\topology_check\t_buildings'
>>> s.split()
将给出所需的输出:
['greenland.gdb', 'opology_check', '_buildings']
s = 'greenland.gdb** opology_check **_buildings' python 认为这有转义序列。 - 表示Python中的空格。
对于上述情况,我们不会指定任何分隔符 .space 被视为默认分隔符。 输入-打印(s.split()) 输出- ['greenland.gdb', 'opology_check', '_buildings']
如果我错了请纠正我。