2009-11-20 4 views
2

У меня есть время в ISO 8601 (2009-11-19T19:55:00), которое также сопряжено с именем commence. Я пытаюсь разобрать это на две части. Я в настоящее время до здесь:Regex to Split 1st Colon

import re 
sColon = re.compile('[:]') 

aString = sColon.split("commence:2009-11-19T19:55:00") 

Очевидно, что это возвращает:

>>> aString 
['commence','2009-11-19T19','55','00'] 

То, что я хотел бы его вернуть это:

>>>aString 
['commence','2009-11-19T19:55:00'] 

Как бы я идти о делать это в оригинальном создании sColon? Кроме того, вы рекомендуете любые ссылки или книги регулярного выражения, которые вы нашли полезными, поскольку я вижу, что я нуждаюсь в этом в будущем!

EDIT:

Для уточнения ... мне нужно регулярное выражение, которое бы просто разобрать на самой первой инстанции :, возможно ли это? Текст (commence) перед двоеточием может быть случайным, да ...

+0

Каковы возможные значения для части перед двоеточием? Только «начать»? –

ответ

5
>>> first, colon, rest = "commence:2009-11-19T19:55:00".partition(':') 

>>> print (first, colon, rest) 
('commence', ':', '2009-11-19T19:55:00') 
+0

Это прекрасно. Я не знал о функции 'partition'! – Federer

+0

Также называется split() –

0

Похож, что вам нужно .IndexOf (":"), то .Substring()?

+0

Я думаю, что язык Python. – ghostdog74

5

Вы могли бы поставить максимальный параметр разделения в расщепленной функции

>>> "commence:2009-11-19T19:55:00".split(":",1) 
['commence', '2009-11-19T19:55:00'] 

Официального Docs

ДЕЛЕНИЯ ([Сентябрь [, maxsplit]]) -> список строк

Return a list of the words in the string S, using sep as the 
delimiter string. If maxsplit is given, at most maxsplit 
splits are done. If sep is not specified or is None, any 
whitespace string is a separator and empty strings are removed 
from the result. 
0

@OP, don ' Не делайте ненужных. Regex не требуется с тем, что вы делаете. Python имеет очень хорошие методы манипулирования строками, которые вы можете использовать. Все, что вам нужно, - split() и нарезка. Это самые основы Python.

>>> "commence:2009-11-19T19:55:00".split(":",1) 
['commence', '2009-11-19T19:55:00'] 
>>>