Створіть файл, який буде містити слова та їх частоту записані в окремих
рядках
через пробіл ( fuzzy 53). Прочитайте цей файл використовуючи
open(filename).readlines().
Розділіть кожну стрічку на дві частини використовуючи split(),
і перетворіть число в ціле значення використовуючи int().
Результат повинен бути у вигляді списку: [['fuzzy', 53], ...].
1. Початок, думаю, мав би бути приблизно такий:
from __future__ import division
import nltk, re, pprint
f = open('f.txt')
p=f.readlines()
print p
import nltk, re, pprint
f = open('f.txt')
p=f.readlines()
print p
p=''word 34\n day 13\n read 45\n free 15'
words=p.split()
words
words=p.split()
words
2. А перетворити число в ціле значення мені не вдається.
Пробувала робити цикл, в якому перевіряла чи стрічка складається з цифр, і
їх записати окремо, але то не то...
Після стрічки
ВідповістиВидалитиp=f.readlines()
я дивлюся тип р і дивлюся скільки елементів має р (4)
Відразу все стає зрозуміло (кожна стрічка окремий елемент)
Треба в циклі перебрати елементи ділити їх на окремі стрічки і перетворювати другу
стрічку в цілі значення.
Після декількох підготовчих спроб:
for i in p:
c=i.split()
a.append(c[0])
a.append(int(c[1]))
a
['word', 34, 'day', 13, 'read', 45, 'free', 15]
for i in p:
c=i.split()
a.append([c[0],int(c[1])])
a
['word', 34, 'day', 13, 'read', 45, 'free', 15, ['word', 34], ['day', 13], ['read', 45], ['free', 15]]
for i in p:
a.append([i.split()[0],int(i.split()[1])])
a
['word', 34, 'day', 13, 'read', 45, 'free', 15, ['word', 34], ['day', 13], ['read', 45], ['free', 15], ['word', 34], ['day', 13], ['read', 45], ['free', 15]]
a=[]
for i in p:
a.append([i.split()[0],int(i.split()[1])])
a
[['word', 34], ['day', 13], ['read', 45], ['free', 15]]
a=[]
[a.append([i.split()[0],int(i.split()[1])]) for i in p]
[None, None, None, None]
a.append([i.split()[0],int(i.split()[1])]) for i in p
SyntaxError: invalid syntax
отримую:
(a.append([i.split()[0],int(i.split()[1])]) for i in p)
a
[['word', 34], ['day', 13], ['read', 45], ['free', 15]]
А як вам такий варіант:
ВідповістиВидалитиfrom __future__ import division
import nltk, re, pprint
f = open('1.txt')
p=f.readlines()
p
['tree 45\n', 'book 15\n', 'web 5\n']
t=[]
for a in p:
w,c=a.split(' ')
k=c[0:len(c)-1]
tx=(w,int(k))
t.append(tx)
t
[('tree', 45), ('book', 15), ('web', 5)]
За умовою задачі результат повинен бути у вигляді списку списків: [['fuzzy', 53], ...].
ВідповістиВидалитиА у Вас список кортежів [('tree', 45), ('book', 15), ('web', 5)].
А такий:
ВідповістиВидалитиimport nltk, re, pprint
lab_5_file = open("C:\lab_5_file.txt").readlines()
results = [(item.strip()).split() for item in lab_5_file]
results2 = [[item[0], int(item[1])] for item in results]
print results2