gpt4 book ai didi

Python:打印时需要一个类似字节的对象,而不是 'str'

转载 作者:行者123 更新时间:2023-11-28 19:08:30 25 4
gpt4 key购买 nike

问题/我尝试了什么

我下载了我尝试运行的 textmining 1.0 库,但这给了我一些导入错误(因为这是一个 python 2 库)所以我在 stackoverflow 上搜索并发现我必须使用 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'

我在堆栈溢出上进行了搜索,通过将 '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'

托尼的建议:
代码检查:

for article in articles:
abstract = searcher.getArticleAbstract(article)
print(type(abstract)) #--> returns <class 'str'>
all_abstracts.append(abstract)
txtSearcher.buildMatrix(all_abstracts)

我现在有这些 open 行:

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'))

发生了一些奇怪的事情

enter image description here这将带我去:

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)

它确实打印了“构建矩阵..”(因此调用了该函数)但是它不打印 print("This really makes me sad!")

最佳答案

据我目前所知,问题中描述的程序奇怪行为的实际原因是我在评论中提出的问题:

您确定您正在编辑的代码中出现错误吗?

Was not considered as relevant and the only right answer explaining all of the observed issues.

所有其他检测到的问题,例如

**RENAME** def write_csv(...) 例如 def my_write_csv(...)

包括提供的解释和提示,例如:

如果您定义一个与库中的函数同名的函数,您会遇到局部/全局作用域的问题,并且完全不知道实际执行了哪个函数?这个来自库或这个你定义的......你插入的 print("This really makes me sad!") 没有打印的事实表明没有执行这个函数但是图书馆一个......

检查整个代码,包括要读取的文件或能够重现错误的摘录 - 对于这种奇怪的行为肯定有一个非常简单的解释。

在指示错误的行之前的代码中查找未闭合的括号或字符串引号或列表 ] 等。

在这种情况下无法取得成功......

关于Python:打印时需要一个类似字节的对象,而不是 'str',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com