在Python中的分隔符'\'处分割字符串

问题描述 投票:0回答:4

我有一个简单的问题。 我正在尝试使用以下方法在

'greenland.gdb\topology_check\t_buildings'
处拆分字符串 S :
'\'

     S.split('\')

我期望输出列表:

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

相反,它返回错误:

SyntaxError: EOL while scanning string literal
。 python 中的字符“\”是什么?与任何其他角色一起工作都很好。

python-2.7 split
4个回答
21
投票

您需要转义反斜杠:

 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

转义字符


3
投票

您需要首先使用原始字符串,'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 — 正则表达式操作(Python 文档)

\
要么转义特殊字符(允许您匹配 像“*”、“?”等字符),或者表示特殊的 顺序;下面讨论特殊序列。

如果您不使用原始字符串来表达模式,请记住 Python 还使用反斜杠作为字符串中的转义序列 文字;如果 Python 的解析器无法识别转义序列, 反斜杠和后续字符包含在结果中 细绳。然而,如果 Python 能够识别结果序列, 反斜杠应重复两次。这很复杂而且很难 理解,所以强烈建议您使用原始字符串 除了最简单的表达之外的所有表达。


3
投票

反斜杠 \ 是一个特殊字符,我也不喜欢魔法,但是,
在这种情况下(对于 python 2.7 和 python 3 ):

>>> s = 'greenland.gdb\topology_check\t_buildings'
>>> s.split()

将给出所需的输出:

['greenland.gdb', 'opology_check', '_buildings']

0
投票

s = 'greenland.gdb** opology_check **_buildings' python 认为这有转义序列。 - 表示Python中的空格。

对于上述情况,我们不会指定任何分隔符 .space 被视为默认分隔符。 输入-打印(s.split()) 输出- ['greenland.gdb', 'opology_check', '_buildings']

如果我错了请纠正我。

© www.soinside.com 2019 - 2024. All rights reserved.