我有一个简单的问题。
我正在尝试使用以下内容在'greenland.gdb\topology_check\t_buildings'
拆分字符串S '\'
:
S.split('\')
我期待输出列表:
['greenland.gdb', 'topology_check', 't_buildings'].
而是返回错误:SyntaxError: EOL while scanning string literal
。什么是性格' \'在python中。任何其他角色都可以。
答案 0 :(得分:4)
你需要逃避反斜杠:
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
答案 1 :(得分:0)
您需要首先使用原始字符串,如下所示:'r'或'R':
In [01]: s = r'greenland.gdb\topology_check\t_buildings'
然后分裂,同时记得逃脱反斜杠
In [02]: s.split('\\')
Out [02]: ['greenland.gdb', 'topology_check', 't_buildings']
引用re — Regular expression operations (Python documentation)
\
要么转义特殊字符(允许您匹配 '*','?'等字符,或表示特殊字符 顺序;特殊序列在下面讨论。如果您不使用原始字符串来表示模式,请记住 Python还使用反斜杠作为字符串中的转义序列 文字如果Python的解析器无法识别转义序列, 反斜杠和后续字符包含在结果中 串。但是,如果Python识别出结果序列,则 反斜杠应重复两次。这很复杂而且很难 了解,因此强烈建议您将原始字符串用于 除了最简单的表达式之外的所有表达式。
答案 2 :(得分:0)
反斜杠\是一个特殊字符,我也不喜欢魔法但是,
在这种情况下(以及 python 2.7 和 python 3 ):
>>> s = 'greenland.gdb\topology_check\t_buildings'
>>> s.split()
将给出所需的输出:
['greenland.gdb', 'opology_check', '_buildings']