在Python中将字符串复制到列表中

3

我有一个列表data,并且我正在从中读取行。

item = user = channel = time = []
with open('train_likes.csv') as f:
    data = csv.reader(f)
    readlines = f.readlines()

我希望将每行拆分为单个字符串元素,并将每个元素附加到另外两个列表之一:useritems
    for line in readlines:
        Type = line.split(",")
        Copy1 = Type[0]
        Copy2 = Type[1]
        user.append(Copy1)
        item.append(Copy2)

但是,当添加item时,user也会被添加Copy2,而且item的值与user相同!!! 用户和物品的值 我已经检查了所有熟悉的答案,但是都没有帮到我(我尝试复制脚本中的所有内容,这里只有一个版本)。
2个回答

6
当你写item=user=channel=time=[]时,你只创建了一个对象,它有四个别名。因此,在向item追加内容时,就相当于向user追加。相反,你应该这样写:
item, user, channel, time = [], [], [], []

或者简单地说
item = []
user = []
channel = []
time = []

OMG,我非常喜欢你! - user6557479

2
如@Greg所指出的那样,您正在创建一个列表对象并将其分配给四个变量。
但是,您的代码似乎没有使用“channel”或“time”。此外,这是一种更节省内存的读取文件的方式。您正在逐行阅读而不是一次读取整个文件。
item = []
user = []
with open('train_likes.csv') as f:
    reader = csv.reader(f)
    for line in reader:
        # Splits on whitespace taking at most three splits (with zero indexing, 2 equals 3...).
        u, i, _ = ", ".join(line).split(", ", 2)  
        item.append(i.strip())
        user.append(u.strip())

感谢您的建议,先生! - user6557479
实际上,在调试你的变量时,我遇到了这个错误: AttributeError: 'list' object has no attribute 'split' 出错行为:u, i, _ = line.split(None, 2) - user6557479

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接