问题 / 我的尝试
我下载了
(document_list只是一个字符串列表) 我得到了以下错误:
然而,即使现在我仍然遇到相同的 "TypeError" 错误:
我在Stack Overflow上搜索了解决方法,通过将
问题:
它确实打印了“building matrix…”(因此该函数被调用),但它没有打印
我下载了
textmining 1.0
库并尝试运行它,但是出现了一些导入错误(因为这是一个 Python 2 的库)。于是我在 Stack Overflow 上搜索后发现我需要使用 2to3.py
,现在一切都能正常工作了。但是当我执行以下操作时:def buildMatrix(self,document_list):
print("building matrix...")
tdm = textmining.TermDocumentMatrix()
for doc in document_list:
tdm.add_doc(doc)
tdm.write_csv(r'path\matrix.csv', cutoff=2)
(document_list只是一个字符串列表) 我得到了以下错误:
File "C:\Users\RICK\Anaconda\lib\site-packages\textmining\__init__.py", line 335, in write_csv
f.writerow(row)
TypeError: a bytes-like object is required, not 'str'
在检查 textmining 1.0
代码时,我相当确定该行应该是一个字符串(string
)。因此,我想通过编辑源代码来打印这一行:
f = csv.writer(open(filename, 'wb'))
for row in self.rows(cutoff=cutoff):
print(row)
f.writerow(row)
然而,即使现在我仍然遇到相同的 "TypeError" 错误:
File "C:\Users\RICK\Anaconda\lib\site-packages\textmining\__init__.py", line 335, in write_csv
print(row)
TypeError: a bytes-like object is required, not 'str'
我在Stack Overflow上搜索了解决方法,通过将
'wb'
替换为'w'
来解决问题,但是仍然出现TypeError
。问题:
- 如何修改代码使其能够写入行。
- 即使print语句也会导致
TypeError
的原因是什么?
基于评论的编辑建议:
Claudio的建议仍然给我带来了TypeError
。
File "C:\Users\RICK\Anaconda\lib\site-packages\textmining\__init__.py", line 335, in write_csv
f.write(row)
TypeError: a bytes-like object is required, not 'str'
Tony的建议:
代码检查:
for article in articles:
abstract = searcher.getArticleAbstract(article)
print(type(abstract)) #--> returns <class 'str'>
all_abstracts.append(abstract)
txtSearcher.buildMatrix(all_abstracts)
我现在有这些开放
的代码行:
f = open(os.path.join(data_dir, 'stopwords.txt'),"r")
f = open(os.path.join(data_dir, 'dictionary.txt'),"r")
f = csv.writer(open(filename, 'w'))
一些奇怪的事情正在发生
def write_csv(self, filename, cutoff=2):
print("This really makes me sad!")
"""
Write term-document matrix to a CSV file.
filename is the name of the output file (e.g. 'mymatrix.csv').
cutoff is an integer that specifies only words which appear in
'cutoff' or more documents should be written out as columns in
the matrix.
"""
print(self.rows)
f = csv.writer(open(filename, 'w'))
for row in self.rows(cutoff=cutoff):
f.writerow(row)
newline=''
。至于为什么print()
会给出相同的错误,可能是被某些东西遮蔽了吗? - Ilja Everilä