2015-11-13 4 views
0

Я новичок в Python и регулярном выражении. Все примеры, которые я нашел в Интернете, выглядят очень двусмысленными и неопределенными. Например, в этих нескольких записях.Python Regular Expression

 2016-01-15T11:40:00-08:00 Valedictorian candidates meet for instructions 
    2016-02-26T15:05:00-08:00 Valedictorian written submissions due 
    2016-03-17 St. Patrick's Day 
    2016-03-25 Good Friday 
    2016-03-27 Easter Sunday 

Я хочу, чтобы конечный результат был похож на последние 3 записи. (Удаление времени, отмеченное TXX: XX: XX-XX: XX) , а также сохранение сводки. Если кто-нибудь может сказать мне, как программировать это простым способом в python или дать мне несколько указателей, это было бы очень признательно.

Редактировать: Данные хранятся в простом .txt-файле, который также выводится через python, так как программа python захватывает значения из Google Календари в выводе выше. Но я хочу иметь в нем регулярное выражение, а также удалить формат времени. Также. Насколько я знаю, Google не позволяет удалить время/поместить его в другой формат времени.

Edit2: Все записи в output.txt

Спасибо заранее.

+0

вы должны показать, как эти данные хранятся, может быть какой-то код, что вы пробовали до сих пор и тому подобное. –

+3

вы также можете сделать это без регулярного выражения и вместо этого использовать строчный срез, поскольку символы, которые вы хотите удалить, по-видимому, имеют определенный индекс. –

ответ

0
>> import re 
>> value = """2016-01-15T11:40:00-08:00 Valedictorian candidates meet for instructions 
... 2016-02-26T15:05:00-08:00 Valedictorian written submissions due 
... 2016-03-17 St. Patrick's Day 
... 2016-03-25 Good Friday 
... 2016-03-27 Easter Sunday 
... """ 

>> re.sub(r'T[\d:-]+ ', ' ', v) 

"2016-01-15 Valedictorian candidates meet for instructions\n2016-02-26 Valedictorian written submissions due\n2016-03-17 St. Patrick's Day\n2016-03-25 Good Friday\n2016-03-27 Easter Sunday\n" 
+0

Посмотрите на свои результаты. Вы возвращаете только последнее слово текста, а не весь текст. – MattDMo

+0

Спасибо, что указали это. Я обновил ответ :-). – pygeek

0

Вы можете заменить соответствующие это регулярное выражение (обозначающее время) -

T(?:\d+(?:-\d+)?:){3}\d+ 

с пустой строкой.
Regex explanation here

код будет выглядеть следующим образом -

In [13]: s='''2016-01-15T11:40:00-08:00 Valedictorian candidates meet for instructions 
2016-02-26T15:05:00-08:00 Valedictorian written submissions due 
2016-03-17 St. Patrick's Day 
2016-03-25 Good Friday 
2016-03-27 Easter Sunday''' 

In [14]: import re 

In [15]: new_str = re.sub(r'T(?:\d+(?:-\d+)?:){3}\d+', '', s) 

In [16]: print new_str 
2016-01-15 Valedictorian candidates meet for instructions 
2016-02-26 Valedictorian written submissions due 
2016-03-17 St. Patrick's Day 
2016-03-25 Good Friday 
2016-03-27 Easter Sunday