@ Терри Споттс прав. Однако начальные и конечные символы |
в строке заголовка сделают этот CSV-файл немного сложным, поскольку разделителем является вертикальная черта, но иногда с начальным пробелом, конечным пробелом или и тем и другим. Но вот пример для создания вашего ID: Class
словаря:
> cat bigfile.txt
| ID | TIME | MAGNITUDE | ERROR |
| Star 3_6588 | 10 | 2 | 1.02 |
| Star 3_6588 | 15 | 4 | 1.2 |
| Star 2_999 | 20 | 6 | 1.4 |
| Star 2_999 | 25 | 8 | 1.6 |
> cat smallfile.txt
| ID | CLASS |
| Star 3_6588 | CLASS I |
Код:
id2class = {}
with open('/tmp/smallfile.txt', 'r') as classfile:
line = classfile.readline() # Skip Header Line
for line in classfile:
line = line.rstrip('\n')[2:-2] # strip newline and the Pipe-Space / Space-Pipe and the start + end
fields = line.split(' | ') # Split on ' | '
id = fields[0]
starclass = fields[1]
id2class[id] = starclass
Теперь у вас есть dict id2class
, который выглядит так:
{
'Star 3_6588': 'CLASS I',
'Star 2_999': 'CLASS II'
}
Затем вы можете аналогичным образом проанализировать первый файл, использовать идентификатор каждой строки для поиска Class
в dict и записать полные данные для строки в новый файл. Я оставлю эту часть вам :)
Удачного кодирования!