Python 如何在'上拆分字符串/';分隔符,但在';/';发生在';之后';

Python 如何在'上拆分字符串/';分隔符,但在';/';发生在';之后';,python,regex,Python,Regex,我正在尝试使用由“/”字符分隔的Python拆分字符串数据。问题是字符串可能多次出现“/”字符,但我只想使用“/”而不使用“\/”来拆分它 例如,我试图将字符串“1\/2/CD”拆分为“1\/2”和“CD”您可以使用正则表达式对象的拆分方法,只需在/上拆分,而该对象不在\后面(使用负回溯): 重新导入 str=u'1\\/2/CD' 关于split(r’(?您可以使用regex对象的split方法,只需在/上进行split,它不在\后面(使用负查找): 重新导入 str=u'1\\/2/CD'

我正在尝试使用由“/”字符分隔的Python拆分字符串数据。问题是字符串可能多次出现“/”字符,但我只想使用“/”而不使用“\/”来拆分它


例如,我试图将字符串“1\/2/CD”拆分为“1\/2”和“CD”

您可以使用正则表达式对象的拆分方法,只需在
/
上拆分,而该对象不在
\
后面(使用负回溯):

重新导入
str=u'1\\/2/CD'

关于split(r’(?您可以使用regex对象的split方法,只需在
/
上进行split,它不在
\
后面(使用负查找):

重新导入
str=u'1\\/2/CD'

关于split(r’(?在regexp中使用负lookback断言:

>>> re.split(r'(?<!\\)/', r'1\/2/CD')
['1\\/2', 'CD']

在regexp中使用负lookback断言:

>>> re.split(r'(?<!\\)/', r'1\/2/CD')
['1\\/2', 'CD']

如果分隔符始终位于字符串的末尾,则可以使用str.rpartition:

>>> print u'1\/2/CD'.rpartition('/') (u'1\\/2', u'/', u'CD') >>>打印u'1\/2/CD'.r分区('/')) (u'1\\/2',u'/',u'CD')
如果分隔符始终位于字符串的末尾,则可以使用str.rpartition:

>>> print u'1\/2/CD'.rpartition('/') (u'1\\/2', u'/', u'CD') >>>打印u'1\/2/CD'.r分区('/')) (u'1\\/2',u'/',u'CD')

标题所问的问题与问题完全不同……是的,的确如此,我不得不删除我的答案。为这个令人困惑的标题道歉。@President\u geek:所以请编辑你的问题标题。你是否必须考虑在一个
/
之前出现的
\\`事件,比如将
计数器\\/example`拆分为
计数器\`和
示例
?在这种情况下,您必须从字符串的开头开始解析,并且没有带负回望的解决方案(因为您必须考虑1、2……组
\`)。标题所问的问题与问题完全不同……是的,我不得不删除我的答案。为标题的混乱道歉。@presented\u geek:所以编辑你的问题标题。你是否必须考虑在一个
/
之前出现的
\`事件,比如将
计数器\\/example`拆分为
计数器\`和
示例e
?在这种情况下,您必须从字符串的开头开始解析,并且没有带负回望的解决方案(因为您必须考虑1、2……组
\`)。字符串
s
split()`方法不“接受”正则表达式。相反,正则表达式对象也有
split()
method。感谢您的注释,我将它们合并到了我的答案中。字符串
s
split()`方法不“接受”正则表达式。相反,正则表达式对象也有一个
split()
方法。感谢您的注释,我将它们合并到了我的答案中。+1第一次得到正确答案:-)您可能还想指出
maxsplit
参数(因为这似乎是标题所问的问题)谢谢,这是有效的。您之前曾尝试过(?!)正如python文档在下面的链接中所提到的:为什么这两个文档在语法上有差异?明白了,出于某种原因,这里的HowTo只是讨论了消极的先行断言而不是后顾。此外,为什么我们需要在re.split(r)中转义“\”(?@presented_geek:将字符串定义为原始字符串意味着python不会对反斜杠做任何事情-但它在正则表达式中有特殊的意义-因此我必须进一步对其进行转义,因为我的意思是,它字面上也使用正则表达式-如果没有原始字符串,我需要四个反斜杠,如
”(?+1用于第一次正确使用它:-)您可能还想指出
maxsplit
参数(因为这似乎是标题所问的问题)谢谢,这是有效的。您之前曾尝试过(?!)正如python文档在下面的链接中所提到的:为什么这两个文档在语法上有差异?明白了,出于某种原因,这里的HowTo只是讨论了消极的先行断言而不是后顾。此外,为什么我们需要在re.split(r)中转义“\”(?@presented_geek:将字符串定义为原始字符串意味着python不会对反斜杠做任何事情-但它在正则表达式中有特殊的含义-因此我必须进一步对其进行转义,因为我的意思是,它字面上也使用正则表达式-没有原始字符串,我需要四个反斜杠,如
”(?)?
>>> print u'1\/2/CD'.rpartition('/')
(u'1\\/2', u'/', u'CD')