Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找第n个“|”后面的子字符串_Python_Python 2.7_Split - Fatal编程技术网

Python 查找第n个“|”后面的子字符串

Python 查找第n个“|”后面的子字符串,python,python-2.7,split,Python,Python 2.7,Split,给定一个字符串,如下所示: 1|2||||auc|0|1||0|||76u| ^ 在第5个“|”之后返回子字符串的最有效方法是什么? 例如,给定上述字符串,结果应为: auc|0|1||0|||76u| 使用str.split: 注意,如果没有至少5 | s,这可能会导致不期望的结果,例如 存在于字符串中,因此您可能希望将其包装为try/except并强制处理没有足够的| s的情况,以便第5个之后的结果为空,因为没有5个存在 try: rest = s.split('|

给定一个字符串,如下所示:

1|2||||auc|0|1||0|||76u|
      ^ 
在第5个“|”之后返回子字符串的最有效方法是什么? 例如,给定上述字符串,结果应为:

auc|0|1||0|||76u|
使用str.split:

注意,如果没有至少5 | s,这可能会导致不期望的结果,例如

存在于字符串中,因此您可能希望将其包装为try/except并强制处理没有足够的| s的情况,以便第5个之后的结果为空,因为没有5个存在

try:
    rest = s.split('|', 5)[5]
except IndexError:
    rest = ''
使用str.split:

注意,如果没有至少5 | s,这可能会导致不期望的结果,例如

存在于字符串中,因此您可能希望将其包装为try/except并强制处理没有足够的| s的情况,以便第5个之后的结果为空,因为没有5个存在

try:
    rest = s.split('|', 5)[5]
except IndexError:
    rest = ''
使用带有第二个参数的limit:

input_string.split('|', 5)[-1]
这会将字符串拆分5次,并获取最后一个元素,该元素具有未拆分的剩余|字符

如果字符串中的字符少于5个|字符,您仍将从拆分中获取最后一个元素,因为[-1]从末尾开始计数。这意味着即使拆分中没有管道符号,表达式也会继续工作

演示:

并引用文件:

如果给定maxsplit,则最多执行maxsplit拆分。因此,列表最多包含maxsplit+1个元素

使用带有第二个参数的limit:

input_string.split('|', 5)[-1]
这会将字符串拆分5次,并获取最后一个元素,该元素具有未拆分的剩余|字符

如果字符串中的字符少于5个|字符,您仍将从拆分中获取最后一个元素,因为[-1]从末尾开始计数。这意味着即使拆分中没有管道符号,表达式也会继续工作

演示:

并引用文件:

如果给定maxsplit,则最多执行maxsplit拆分。因此,列表最多包含maxsplit+1个元素


漂亮干净的解决方案。请允许我为记录添加一些有希望的常识:如果您有充分的理由认为大部分字符串的管道少于五个,那么您可能希望首先拆分并检查结果的长度,而不是捕获错误。这是一个很好的干净解决方案。请允许我为记录添加一些有希望的常识:如果您有很好的理由期望字符串的大部分将少于五个管道,那么您可能希望首先拆分并检查结果的长度,而不是捕获错误。
input_string.split('|', 5)[-1]
>>> input_string = '1|2||||auc|0|1||0|||76u|'
>>> input_string.split('|', 5)
['1', '2', '', '', '', 'auc|0|1||0|||76u|']
>>> input_string.split('|', 5)[-1]
'auc|0|1||0|||76u|'
s = '1|2||||auc|0|1||0|||76u|'
sre =  re.compile('([^|]*)(' + r*4 + ')(.*)')

sre.search(s).groups()
Out[39]: ('1', '|2|||', '|auc|0|1||0|||76u|')

sre.search(s).group(3)[1:]
Out[40]: 'auc|0|1||0|||76u|'