Как я могу разделить эту строку на python
Я изучаю Python (3). Я хотел бы разделить каждую из этих строк на четыре отдельные части.
[Test Branch] bobjones 0 6/13/2008 4:24 PM
[Todd's Workspace] tfatcher 0 6/16/2008 9:20 AM
[Henry] hmckinkley 1 6/17/2008 10:12 AM
[Henry] hmckinkley 0 6/17/2008 10:15 AM
Я мог бы позвонить на линию.split () на каждом из них, но затем я бы поставил дату обратно вместе. И я думаю, что пробелы в первом разделе [] также исключают это. Я предполагаю, что могу разрезать его, но я не уверен на 100%, что эти данные имеют фиксированную ширину, как кажется. Регулярное выражение, наверное, лучше всего, а? Есть какие-нибудь указания на это?
Обновление:
Я думал, что решение @Selcuk это сработает отлично:
branch,user,version,timestamp = [commitheaderline.split("]", 1)[0] + "]"] + commitheaderline.split("]", 1)[1].split(None, 2)
Но затем я столкнулся с некоторыми данными, где имя пользователя было слишком длинным (пример ниже), поэтому остальные данные оказались в новой строке. Так что я работаю над этим сейчас. Я думаю, что как-то проверю линию перед запуском split (), и если она не выглядит как "правильная" линия, Я присоединю ее к следующей.
[Test Branch] bobjones 0 6/13/2008 4:24 PM
[Todd's Workspace] tfatcher 0 6/16/2008 9:20 AM
[cole] bob.darknsdale
0 7/27/2012 12:49 PM
3 ответов:
Вы можете сделать следующее:
[line.split("]", 1)[0] + "]"] + line.split("]", 1)[1].split(None, 2)Что приведет к
['[Test Branch]', 'bobjones', '0', '6/13/2008 4:24 PM']
Попробуйте
import re sep = re.split(" {2,}", str)Это будет работать, если строки разделены более чем одним пробелом. Если они обозначены табуляцией, попробуйте
import re sep = re.split("\t+", str)
In [4]: import re In [5]: print text [Test Branch] bobjones 0 6/13/2008 4:24 PM [Todd's Workspace] tfatcher 0 6/16/2008 9:20 AM [Henry] hmckinkley 1 6/17/2008 10:12 AM [Henry] hmckinkley 0 6/17/2008 10:15 AM In [6]: pattern = re.compile(r'(\[.*?\])\s+(\w+)\s+(\d+)\s+(.*?$)', re.M) In [7]: for match in pattern.finditer(text): ...: #do whatever you want here. cols are grouped ...: print "first col: %s - 4th col: %s" %(match.group(1), match.group(4)) ...: ...: first col: [Test Branch] - 4th col: 6/13/2008 4:24 PM first col: [Todd's Workspace] - 4th col: 6/16/2008 9:20 AM first col: [Henry] - 4th col: 6/17/2008 10:12 AM first col: [Henry] - 4th col: 6/17/2008 10:15 AMЭто будет работать с любым размером пробелов или вкладок.
Comments