用Python更新CSV文件

2024-04-24 20:37:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更新csv文件https://www.kaggle.com/carolzhangdc/imdb-5000-movie-dataset。你知道吗

在这个csv文件的末尾,我试图在电影的图像中添加一个新的url。你知道吗

我的代码在下面

import csv
from bs4 import BeautifulSoup
import urllib2

with open('movie_metadata.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print('Column names are {}'.format(", ".join(row)))
            row[-1] = "movie_links"
            line_count += 1
        else:
            imdb_link = row[17]
            soup = BeautifulSoup(urllib2.urlopen(imdb_link).read(), features="html.parser")
            link = soup.find_all('div', {'class': 'poster'})
            if link:
                row[-1] = link[0].find('img')['src']
            line_count += 1
    print('Processed {} lines.'.format(line_count))

我正在row[-1]创建新行,并尝试更新csv文件if link:

但它根本不更新我的csv文件,在我运行代码后它保持不变。你知道吗


Tags: 文件csv代码importifcountlinelink
1条回答
网友
1楼 · 发布于 2024-04-24 20:37:55

你知道你覆盖了数组row中的最后一个元素吗?你应该append()而不是改变[-1]。尝试:

row.append("movie_links")而不是row[-1] = "movie_links"

以及

row.append(link[0].find('img')['src'])而不是row[-1] = link[0].find('img')['src']。你知道吗

然后,要实际编写CSV文件,请对新行使用csv.writer(这里的文档:https://docs.python.org/3/library/csv.html)。你知道吗

注意,row + ["movie links"]对于第一个是另一种附加方式。使用[-1]覆盖最后一个元素而不是追加!让我知道如果你想让我给你编码的csv写作部分。你知道吗

相关问题 更多 >