【发布时间】:2019-01-26 21:35:15
【问题描述】:
作为学习 OOP 的练习,我试图将现有脚本转换为 OOP 形式,但没有成功:我当前的 OOP 方法创建了一个不可迭代的对象 main.rawText 对象位于 0x0000029D55515BA8> TypeError: 'rawText' 对象不可迭代
我练习的目的是将 CSV 文件(产品评论的集合)中的内容读取到将被清理和分析的列表列表中。如何生成可以进行列表和文本操作的列表?
下面的第一个脚本是我失败的尝试,之后是工作的非 OOP 版本
class rawText(object):
def __init__(self, name_file):
self.name_file = name_file
def read_file(self):
"""Read the file concent"""
with open(name_file, 'r') as in_file:
self = in_file.readlines()
return self
def display_file(self):
print(self)
def main():
x = rawText('HCPsentiment2.csv')
x.display_file()
if __name__ == '__main__':
main()
上面产生了一些我无法运行 content_cleaner 的东西。下面是我的原...
# Step 1A - define the content cleaner
def content_cleaner(feed_list):
temp_list = [str(item) for item in feed_list]
temp_list = [item.lower() for item in temp_list]
temp_list = [item.replace("b\'","").replace("\\x93","").replace("\\x94","").replace("\\x96","")
.replace('.','').replace(',','').replace(';','').replace(':','').replace('(','').replace(')','') .replace("'\'","").replace("\\x92","'").replace('"','').replace('"','').replace('[','').replace(']','')
.replace("\\","'")
for item in temp_list]
return list(filter(None, temp_list))
# Step 1B - draw in raw sample text (here a pre-screened csv file)
with open('HCPsentiment2.csv', 'rb') as file:
content = file.readlines()
# perform transformation
content_clean = content_cleaner(content)
# Step 1C - split and clean the sample
content_cl_sp=[phrase.split() for phrase in content_clean]
content_flat = [item for sublist in content_cl_sp for item in sublist]
【问题讨论】:
-
self = in_file.readlines()?你觉得这有什么作用? self 是你类的 instance .. 你为什么要给它分配一些东西? -
open('HCPsentiment2.csv', 'rb')... 为什么将 text 读为"rb"二进制? -
为什么都是
item.replace("b\'","").replace("\\x93","").replace("\\x94","").replace("\\x96","") .replace('.','').replace(',','').replace(';','').replace(':','').replace('(','').replace(')','') .replace("'\'","").replace("\\x92","'").replace('"','').replace('"','').replace('[','').replace(']','').replace("\\","'")? -
... 是否会使用模块 csv 或 pandas 或其他任何东西来阅读您的 csv 尊重引用的字符串不会让它变得更容易吗? CSV 读取很简单,看看 f.e.这里:how-to-read-csv-file-lines-and-split-elements-in-line-into-list-of-lists
-
感谢您的回复,帕特里克。作为对所有问题的一般回答:我对编程、python 和 OOP 比较陌生。具体来说...... 1. 我认为 self = in_file.readlines() 会创建一个阅读器对象(我从你的回复中不清楚这个假设是否正确)。 2. 'rb' 是一个错字 3. replace 语句从文本中删除了一堆垃圾 4. 后面的元素(未显示)涵盖了一些与 pandas 相关的评论
标签: python python-3.x oop