How to use re.search as an integer ? Python
所以我有一根绳子
1 | s = '>n269412 | AK142815 | msdfhakjfdkjfs' |
我想包括但不包括""的第一个实例
所以我做的是
1 2 3 4 5 | import re p = re.search('|',s) print s[:p] |
号
但我犯了这个错误
1 2 3 | Traceback (most recent call last): File"<stdin>", line 1, in <module> TypeError: slice indices must be integers or None or have an __index__ method |
我明白它为什么不起作用。。因为该值不是整数,但在搜索找到该元素的位置,是否可以使用该值?
为什么还要为这个用例使用regex?
1 2 | s = '>n269412 | AK142815 | msdfhakjfdkjfs' print s.partition('|')[0] |
号
您不需要正则表达式:
1 | first, rest = s.split('|', 1) |
我认为
1 2 | In [7]: re.match('[^|]*', s).group(0) Out[7]: '>n269412 ' |
如果没有
但正如其他人所说,你不需要一个正则表达式…
该错误是因为re.search返回一个matchObject,您试图对其进行切片,但无法执行。请参阅re.search文档。
我将执行以下操作:
1 2 3 4 5 6 7 8 9 | s = '>n269412 | AK142815 | msdfhakjfdkjfs' # look for the pipe character findPipe = s.find("|") # replace everything after the pipe with empty string s = s.replace(s[findPipe:],"") print s |
。
有关分割字符串的详细信息,请参见这两个链接。
你可能想要的是
1 2 | >>> s[:p.start()] '>n269412 ' |
。
顺便说一句,您需要修正正则表达式,因为它只与
1 | p = re.search('\|', s) |