2016-10-26 2 views
-2

У меня есть массив, состоящий из двух столбцов и нескольких строк. В первом столбце есть строки, которые я хочу разбить. Эти элементы имеют форму (* .txt). Например, «main.txt», мне нужно сохранить только префикс (main). Однако функция «split» не работает в массиве. Можете ли вы рассказать мне, как я могу решить эту проблему? Я видел несколько сообщений, похожих на то, что я просил, но я не мог найти свой ответ. Извините за неудобства, заранее. Я только начал использовать python.Разбиение строк в массиве в python

Ниже мой код и ошибка:

arr = np.genfromtxt('file',dtype=(str)) 
rest=arr.split(".")[0]AttributeError       Traceback (most recent call last) 
<ipython-input-27-02be1ad07338> in <module>() 
----> 1 rest=arr.split(".")[0] 

AttributeError: 'numpy.ndarray' object has no attribute 'split' 

ответ

1
import numpy as np 

x= np.array((('aa.txt',1),('b.tct',2))) 
print np.apply_along_axis(lambda a: (a[0].split('.')[0],a[1]),1,x) 
[['aa' '1'] 
['b' '2']] 

EDIT: Возможно, я должен уточнить - Numpy массивы не являются естественными для не числовых матриц. Рассмотрим списки (Предполагается, что разделитель в файле пространства):

table=[(r.split()[0].split('.')[0],r.split()[1]) for r in open('file')] 

или избежать двойной раскол:

table = [] 
for r in open('file'): 
    r = r.split() 
    table.append((r[0].split('.')[0],r[1])) 
Смежные вопросы