Python 将for循环写入CSV

Python 将for循环写入CSV,python,csv,Python,Csv,我在用beautifulsoup搜集评论。我有刮削部分下来,准备写我的代码到一个csv文件。通过在线查看许多示例,我仍然不理解如何写入csv文件。我的刮码是 for i in range(0,200,5): url = "https://www.tripadvisor.com/Hotel_Review-g39143-d92240-Reviews-or" + str(i) + "-Hawthorn_Suites_by_Wyndham_Wichita_East-Wichita_Kansas"

我在用beautifulsoup搜集评论。我有刮削部分下来,准备写我的代码到一个csv文件。通过在线查看许多示例,我仍然不理解如何写入csv文件。我的刮码是

for i in range(0,200,5):
    url = "https://www.tripadvisor.com/Hotel_Review-g39143-d92240-Reviews-or" + str(i) + "-Hawthorn_Suites_by_Wyndham_Wichita_East-Wichita_Kansas"
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
    response = requests.get(url, headers=headers, verify=False).text
    soup = BeautifulSoup(response, "lxml")
    reviews = soup.find_all('div', 'reviewSelector')
    for r in reviews:
        print("Rating: ", int(r.find('span','ui_bubble_rating')['class'][1].split('_')[1])/10)
        print("Review snipet: ", r.p.text)
要写入csv,我尝试用csv.writer方法包装代码

with open('TA-reviews.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',', quotechar='"')
    for i in range(0,200,5):
    url = "https://www.tripadvisor.com/Hotel_Review-g39143-d92240-Reviews-or" + str(i) + "-Hawthorn_Suites_by_Wyndham_Wichita_East-Wichita_Kansas"
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
    response = requests.get(url, headers=headers, verify=False).text
    soup = BeautifulSoup(response, "lxml")
    reviews = soup.find_all('div', 'reviewSelector')
    for r in reviews:
        print("Rating: ", int(r.find('span','ui_bubble_rating')['class'][1].split('_')[1])/10)
        print("Review snipet: ", r.p.text)
        writer.writerow((rating, review))
返回一个错误,即评级未定义,但打印了一个评级

返回未定义分级的错误

当然,评级是未定义的。在您的代码中,哪里有一条语句将任何内容绑定到名称评级

然而,一个评级已经打印出来了

打印出来的是表达式intr.find'span','ui\u bubble\u rating'['class'][1].split'[1]/10。这并没有定义任何评级变量

你想要:

for r in reviews:
    rating = int(r.find('span','ui_bubble_rating')['class'][1].split('_')[1])/10
    review = r.p.text
    writer.writerow((rating, review))

未定义最后一行中的评级。代码中没有定义名称为rating的变量。请检查“for i”后面的缩进,范围为0200,5:如果没有缩进,则此第一个for循环没有正文。啊,是的,现在有意义了。但是我仍然得到一个错误:UnicodeEncodeError:“charmap”编解码器无法对173-177位置的字符进行编码:字符映射到@user9270834这是另一个问题,这里已经问了十几次了。解决方案取决于您没有指定的Python版本,以及您在r.p.text中得到的确切内容。我明白您的意思。过了一段时间,我看到了错误。谢谢你的帮助。