在Python中拆分数据?
它不起作用。我想在代码行属性中拆分数据在Python中拆分数据?,python,function,class,oop,attributes,Python,Function,Class,Oop,Attributes,它不起作用。我想在代码行属性中拆分数据 class movie_analyzer: def __init__(self,s): for c in punctuation: import re moviefile = open(s, encoding = "latin-1") movielist = [] movies = moviefile.readlin
class movie_analyzer:
def __init__(self,s):
for c in punctuation:
import re
moviefile = open(s, encoding = "latin-1")
movielist = []
movies = moviefile.readlines()
def lines(movies):
for movie in movies:
if len(movie.strip().split("::")) == 4:
a = movie.strip().split("::")
movielist.append(a)
return(movielist)
movie = movie_analyzer("movies-modified.dat")
movie.lines
它还说:
要调用函数,请将
movie.lines()
与参数一起使用。您所做的只是访问方法声明。另外,确保在方法定义中使用self作为参数,并保存希望对象具有的参数。通常,将导入内容放在文件的开头是一种很好的做法
import re
class movie_analyzer:
def __init__(self,s):
for c in punctuation:
moviefile = open(s, encoding = "latin-1")
self.movielist = []
self.movies = moviefile.readlines()
@property
def lines(self):
for movie in self.movies:
if len(movie.strip().split("::")) == 4:
a = movie.strip().split("::")
self.movielist.append(a)
return self.movielist
movie = movie_analyzer("movies-modified.dat")
movie.lines()
您可以使用
@property
decorator来访问方法的结果作为属性。请看这个关于如何使用此装饰器的非常简单的示例:
import random
class Randomizer:
def __init__(self, lower, upper):
self.lower = lower
self.upper = upper
@property
def rand_num(self):
return random.randint(self.lower, self.upper)
然后,您可以这样访问它:
>>> randomizer = Randomizer(0, 10)
>>> randomizer.rand_num
5
>>> randomizer.rand_num
7
>>> randomizer.rand_num
3
显然,这是一个无用的例子;但是,您可以将此逻辑应用于您的情况
另外,还有一件事:您没有将self
传递到行
。您可以传递电影
,这是不需要的,因为您可以使用self.movies
访问它。但是,如果要使用self
访问这些变量,则必须设置(在\uuuuu init\uuuu
方法中):
谢谢,它是这样运行的。但我想把它当作电影来运行。我应该如何更改代码?我在编辑时考虑了@gmdev给出的答案。让我知道它是否有效,如果有效,请接受答案似乎没有什么理由让它成为一个类,而不是一个简单的函数。
self.movielist = []
self.movies = moviefile.readlines()