Так что я борюсь с некоторым кодом внутри цикла, который будет работать миллионы раз. Я хотел бы знать, каким образом (в Python) проанализировать набор столбцов фиксированной ширины с разделителями пробелов с цифрами и преобразовать их в укороченную форму. Я буду цикл над данными, как это:Самый быстрый способ в Python для разбора чисел, разделенных пробелами
entry = "1 0 0 7 1 1 2 3 4 5 6 0"
, и я в основном нужно вытащить 5-й, 7-й, 8-й, 9-й, и 10-й indicies для преобразования чисел в строки идентификатора.
Вариант 1: Так как данные фиксированной ширины, я мог бы сделать что-то вроде:
a,b,c,d,e = entry[28:33],entry[38:43],entry[43:48],entry[48:53],entry[53:59]
вытащить цифры (с пробелами), а затем сформировать свою строку:
return "c"+a.strip()+"x"+b.strip()+"e"+c.strip()+"s"+d.strip()+"n"+e.strip()
Вариант 2: Do расщепляет первый:
fields = entry.split()
return "c"+fields[5]+"x"+fields[7]+"e"+fields[8]+"s"+fields[9]+"n"+fields[10]
Для нескольких тестов вариант 2 работает примерно на 5% быстрее, чем вариант 1. Есть ли другие варианты здесь, которые могут быть быстрее? Может быть, регулярное выражение с группами? Производительность действительно имеет первостепенное значение, поэтому я готов использовать (с хорошими комментариями встроенное) то, что не является высокой удобочитаемостью.
Вы, кажется, хорошо разбираетесь; почему бы не попробовать регулярное выражение и посмотреть. –
В настоящее время я работаю над регулярным выражением, но мне так плохо в регулярных выражениях. Я не могу понять, как захватить несколько групп. Возможно, я должен глубже понять это. – Randy
'entry.split()', а затем использовать индексы –