属性错误:“列表”对象没有属性“分割”

属性错误:“列表”对象没有属性“分割”,第1张

属性错误:“列表”对象没有属性“分割”

我认为您实际上在这里更加困惑。

最初的错误是您试图调用

split
整个行列表,而不能
split
列出一个字符串列表,而只能是一个字符串。因此,您需要
split
每一行
,而不是全部。

然后您正在做

for points inType
,并期望每一个
points
都能给您带来新的
x
感觉
y
。但这不会发生。
Types
是两个值,
x
y
,所以首先
points
x
,然后点是
y
,然后就可以完成。因此,同样,您需要遍历每行并从
每行 获取
x
y
值,而不是遍历单行中的一行。 __
Types

因此,所有内容都必须循环进入文件中的每一行,并对每一行执行一次

split
into
x
y
一次。像这样:

def getQuakeData():    filename = input("Please enter the quake file: ")    readfile = open(filename, "r")    for line in readfile:        Type = line.split(",")        x = Type[1]        y = Type[2]        print(x,y)getQuakeData()

附带说明一下,您确实应该

close
在文件中添加一个理想的
with
语句,但是我将在最后讨论。


有趣的是,这里的问题并不在于您是个新手,而是您试图以专家会用的抽象方式来解决问题,而现在还不了解细节。这是完全可行的。您只需要明确地映射功能,而不是隐式地进行功能映射。像这样:

def getQuakeData():    filename = input("Please enter the quake file: ")    readfile = open(filename, "r")    readlines = readfile.readlines()    Types = [line.split(",") for line in readlines]    xs = [Type[1] for Type in Types]    ys = [Type[2] for Type in Types]    for x, y in zip(xs, ys):        print(x,y)getQuakeData()

或者,一种更好的书写方式可能是:

def getQuakeData():    filename = input("Please enter the quake file: ")    # Use with to make sure the file gets closed    with open(filename, "r") as readfile:        # no need for readlines; the file is already an iterable of lines        # also, using generator expressions means no extra copies        types = (line.split(",") for line in readfile)        # iterate tuples, instead of two separate iterables, so no need for zip        xys = ((type[1], type[2]) for type in types)        for x, y in xys: print(x,y)getQuakeData()

最后,您可能想看一下NumPy和Pandas,它们 确实 为您提供了一种以几乎与您尝试的方式相同的方式在整个数据数组或数据帧上隐式映射功能的方法。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存