在分隔符处拆分字符串' \'在python中

时间:2016-05-27 13:21:42

标签: python-2.7 split

我有一个简单的问题。 我正在尝试使用以下内容在'greenland.gdb\topology_check\t_buildings'拆分字符串S '\'

     S.split('\')

我期待输出列表:

 ['greenland.gdb', 'topology_check', 't_buildings']. 

而是返回错误:SyntaxError: EOL while scanning string literal。什么是性格' \'在python中。任何其他角色都可以。

3 个答案:

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

Escape characters

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