Как заменить определенные символы в 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'