2015-09-16 3 views
1

У меня есть данные в одном столбце в виде текстового файла, как это:Как извлечь числовые данные из текстового файла

2305 \ n1961 \ n2224 \ n1223 \ п. когда я читаю эти данные, он меняет data_type на строку.

data = open('C:\file.txt','r') 
lines = data.readlines() 
new_data = [] 
for i in range(len(lines)): 
new_data.append(lines[i].strip()) 
print new_data 

Это дает [ '2305', '1961', '2224', '1223'] однако я хочу выше выход без разделителей "'"

Я попытался это, но не работает

no_list = [] 
for list in new_data: 
    no_list.append(int(list)) 
print no_list 

и все тот же результат, что и раньше. ow я могу получить числовые данные в формате int.

+2

Ваш второй блок кода дает мне '[2305, 1961, 2224, 1223]'. Вы уверены, что это именно тот код, который вы используете? – Kevin

+0

Упс! Я постоянно искал решения и пока не понял, что получил решение. Мой второй код работает нормально. Спасибо за вашу помощь. –

ответ

1

Существует несколько способов преобразования списка из коллекции string в категории int. Первое, что я хотел бы отметить, однако, заключается в следующем: не перебирайте дважды по списку, если вам этого не нужно. Когда вы перебор, считывать данные, преобразовать его в тип, и добавить его:

for line in data.readlines(): 
    new_data.append(int(line.strip())) 

Это может быть сокращено с помощью списка понимания или map вызова:

new_data = map(int, data.readlines()) 
new_data = [int(line) for line in data.readlines()] 

Если вы должен перебрать его дважды, вы можете использовать список понимание или map преобразовать его:

no_data = [int(num) for num in new_data] 
# or 
no_data = map(int, new_data) 
1

Просто введите ввод типа строки UTF-8 и используйте встроенную функцию int(). Я внесла необходимые изменения в ваш код ниже. Я также сделал это так, чтобы вы только перебирали список строк один раз и упрощали поток программы, чтобы ее было легче понять.

lines = open('C:\file.txt','r').readlines() 
new_data = [] 
for line in lines: 
    new_data.append(int(line.strip())) 
print new_data 

Наслаждайтесь и удачи.

Смежные вопросы