Как удалить эти (') и (' ') в Python? - PullRequest
0 голосов
/ 29 ноября 2018

У меня проблема с (') и (") в Python. Я написал этот код:

from __future__ import division
from sklearn.feature_extraction.text import CountVectorizer
import os
import numpy as np

# STEP1 Load the classic4 dataset
fold = os.path.join('classic')

corpus = []
for file in os.listdir(fold):
with open(os.path.join(fold, file)) as f:
    text = f.read()
    text = text.strip()
    text = text.replace('\n',' ')
    corpus.append(text)
    #print(text)

with open('terms.txt') as f:
voc = f.readlines()
voc = [v.replace('\n', '') for v in voc]
vectorizer = CountVectorizer(vocabulary=voc)
X = vectorizer.fit_transform(corpus).todense()
#print(vectorizer.get_feature_names())
#np.save('X.npy', X)
np.savetxt('X.txt', X, fmt="%d")

print(X.shape)

#  STEP2  list of lists aka tfidf_vectorized_list

with open('docbyterm.tfidf.txt') as f:
txt = f.readlines()

data = []
for i in range(7095):
data.append([])
for i in txt:
i_list = i.split(' ')
data[int(i_list[0])-1].append(int(i_list[1]))

with open('tfidf_vectorized_list.txt','w+') as f:
for i in data:
    f.write(str(i)[1:-1])
    f.write('\n')
 #print(data)

 tfidf_vectorized_list = []
 with open('tfidf_vectorized_list.txt') as f:
 for line in f:
    inner_list = []
    for elt in line.split(','):
        stripped_elt = elt.strip()
        if len(stripped_elt) > 0:
            inner_list.append(int(stripped_elt))
    tfidf_vectorized_list.append(inner_list)
 tfidf_vectorized_list = np.array(tfidf_vectorized_list)
 print(tfidf_vectorized_list)

Ссылка для tfidf_vectorized_list: https://github.com/Diallosky/tfidf_vectorized_list. Я заметил, что мой tfidf_vectorized_listвыглядит так:

2, 5, 4, 1, 3
11, 7, 9, 8, 10, 6
16, 12, 14, 13, 15
11, 19, 18, 17, 15
7, 21, 20
11, 23, 22
...
23, 58, 55, 51, 53, 59, 57, 60, 50, 56, 31, 12, 54, 52

Приведенный выше код производит следующий вывод:

[['2, 5, 4, 1, 3' '']
['11, 7, 9, 8, 10, 6' '']
['16, 12, 14, 13, 15' '']
...
['23, 58, 55, 51, 53, 59, 57, 60, 50, 56, 31, 12, 54, 52' '']

Я хотел бы удалить символы ' и '', чтобы получить результаткак это:

[[2, 5, 4, 1, 3]
[11, 7, 9, 8, 10, 6]
[16, 12, 14, 13, 15]
...
[23, 58, 55, 51, 53, 59, 57, 60, 50, 56, 31, 12, 54, 52]

1 Ответ

0 голосов
/ 29 ноября 2018

Вы ошибаетесь в этой строке:

inner_list = [elt.strip() for elt in line.split('\n')]

Вы должны делиться на ,, а не \n.Оператор for line in f автоматически разбивает файл на строки для вас.

Кроме того, если вы хотите, чтобы элементы списка вывода были числами, а не строками, вы должны преобразовать их, например, с помощью int().Вам нужно позаботиться о пустых элементах, потому что они будут вызывать ошибки при использовании на них int().

Вы можете достичь того, чего хотите, заменив эту строку:

inner_list = [elt.strip() for elt in line.split('\n')]

на

inner_list = []
for elt in line.split(','):
    stripped_elt = elt.strip()
    if len(stripped_elt) > 0:
        inner_list.append(int(stripped_elt))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...