Как заменить определенные символы в dtype.names в Python?

У меня есть файл данных в форме, приведенной ниже:

column_1    column 2    column-3    column-4    column_5    column 6
1   2   3   1   2   3
4   3   2   3   2   4
1   4   3   1   4   3
5   6   4   5   6   4

Когда я импортирую следующий файл, имена заголовков с пробелами автоматически заменяются подчеркиванием, которое я заменяю обратно пробелами. Но как сохранить дефисы. Код, который я использовал:

import numpy as np
with open('data.dat', 'rb') as f:
    header = f.readline().split('\t')
    arr = np.genfromtxt(f, names = header, comments='#', delimiter='\t', dtype=None)
arr.dtype.names = [j.replace('_', ' ').replace('-', ' ') for j in arr.dtype.names]
print arr.dtype.names

Выход

('column_1', 'column_2', 'column3', 'column4', 'column_5', 'column_6')

Как вернуть дефисы столбцов 3 и 4 в Python?

2 ответа

Убедитесь, что ваши заголовки разделены \t в вашем файле:

import numpy as np
with open('data.dat', 'rb') as f:
    header = f.read().split("\n")[0].split("\t")
    arr = np.genfromtxt(f, names = header,comments='#', delimiter='\t', dtype=object)
arr.dtype.names = [j.replace('_', ' ') if j[:-1]+"-"+j[-1] not in header else j[:-1]+"-"+j[-1] for j in arr.dtype.names]
print arr.dtype.names

>> ('column 1', 'column 2', 'column-3', 'column-4', 'column 5', 'column 6')

Подсказка - вы можете использовать регулярные выражения для извлечения данных в столбцах, в приведенном выше случае выражение будет выглядеть примерно так exp = r'column.\d'

Другие вопросы по тегам