У меня есть некоторые данные (текстовые файлы), которые отформатированы самым неравномерным образом, о котором можно было подумать. Я пытаюсь свести к минимуму объем ручной работы по разбору этих данных.Как удалить переменные пространства в каждой строке текстового файла на основе специального условия - однострочный в Python?
Образец данных:
Name Degree CLASS CODE EDU Scores
--------------------------------------------------------------------------------------
John Marshall CSC 78659944 89989 BE 900
Think Code DB I10 MSC 87782 1231 MS 878
Mary 200 Jones CIVIL 98993483 32985 BE 898
John G. S Mech 7653 54 MS 65
Silent Ghost Python Ninja 788505 88448 MS Comp 887
Условия:?
- Более одного помещения должны быть сжаты до ограничителя (трубы лучше конечной целью является сохранение этих файлов в базе данных).
- За исключением первого столбца, в других столбцах не будет пробелов, поэтому все эти пространства могут быть сжаты в трубу.
- Только первая колонка может содержать несколько слов с пробелами (Mary K Jones). Остальные столбцы - это в основном числа и некоторые алфавиты.
- Первый и второй столбцы - это строки. У них почти всегда есть более одного пространства между ними, так что мы можем различать два столбца. (Если есть одно место, это риск, который я готов принять, учитывая ужасное форматирование!).
- Число столбцов меняется, поэтому нам не нужно беспокоиться о именах столбцов. Все, что мы хотим - извлечь данные каждого столбца.
Надеюсь, я имел смысл! У меня такое чувство, что эта задача может быть выполнена в oneliner. Я не хочу, чтобы петля, петля, петля :(
Muchos GRACIAS «питонисты» для чтения на всем пути и не дойдя до этого предложения
Данные, которые вы показываете, выглядят так, как будто у них были вкладки, а не пробелы в нем, чтобы данные в каждом столбце совпадали с заголовком - обратите внимание, что заголовки располагаются соответствующим образом. Вы совершенно уверены, что он будет искажен до того, как вы его получите? Вы уверены, что в данных нет вкладок? Обратите внимание, что регулярное выражение в принятом в настоящее время ответе использует '\ s', который будет соответствовать любому символу пробела (т. Е. Соответствует вкладке, а также пробелу) - регулярное выражение все еще« работает », если вы замените« \ s »на« »? –
Интервал настолько непоследовательный, следовательно, этот маршрут. Я заменяю все вкладки (\ t на 3 пробела). Я все еще проверяю версию регулярного выражения от SilentGhost. Я мог бы пойти с предыдущим вариантом, он просто работает. Небольшая комната для ошибок, но это то, к чему я готов, учитывая сумасшедшее форматирование этих документов. Спасибо! – ThinkCode
Итак, вы разбили ваши данные, изменив каждую вкладку на 3 пробела, и вы не сказали нам ??? Это примерно -100, откуда я родом, но я перестану дышать и продолжаю ... –