gpt4 book ai didi

python - 如何将非英文字符串存储到excel文件中,python3?

转载 作者:太空狗 更新时间:2023-10-30 01:36:45 26 4
gpt4 key购买 nike

我有一个从旅游网站抓取评论并将其存储在 Excel 文件中的简单项目。评论可以是西类牙语、日语或任何其他语言,评论有时还包含特殊符号,如“❤❤”。

我需要存储所有的数据(特殊符号不能写可以排除)

我能够抓取我想要的数据并将其按原样打印在控制台中(如日文文本),但问题在于将其存储在 csv 文件中,它显示如下所示的错误消息

我尝试用 utf-8 编码打开文件(如下评论所述),但随后它以一些毫无意义的怪异符号保存数据....并找不到问题的答案。任何建议。

我正在使用 python 3.5.3

我的 python 代码:

from selenium import webdriver
from bs4 import BeautifulSoup
import time
import re

file = "TajMahalSpanish.csv"
f = open(file, "w")
headers = "rating, title, review\n"
f.write(headers)

pages = 119
pageNumber = 2
option = webdriver.ChromeOptions()
option.add_argument("--incognito")

browser = webdriver.Chrome(executable_path='C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.5\chrome webdriver\chromedriver', chrome_options=option)

browser.get("https://www.tripadvisor.in/Attraction_Review-g297683-d317329-Reviews-Taj_Mahal-Agra_Agra_District_Uttar_Pradesh.html")
time.sleep(10)
browser.find_element_by_xpath('//*[@id="taplc_location_review_filter_controls_0_form"]/div[4]/ul/li[5]/a').click()
time.sleep(5)
browser.find_element_by_xpath('//*[@id="BODY_BLOCK_JQUERY_REFLOW"]/span/div[1]/div/form/ul/li[2]/label').click()
time.sleep(5)

while (pages):
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
containers = soup.find_all("div",{"class":"innerBubble"})

showMore = soup.find("span", {"onclick": "widgetEvCall('handlers.clickExpand',event,this);"})
if showMore:
browser.find_element_by_xpath("//span[@onclick=\"widgetEvCall('handlers.clickExpand',event,this);\"]").click()
time.sleep(3)
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
containers = soup.find_all("div", {"class": "innerBubble"})
showMore = False

for container in containers:
bubble = container.div.div.span["class"][1]
title = container.div.find("div", {"class": "quote"}).a.span.text
review = container.find("p", {"class": "partial_entry"}).text
f.write(bubble + "," + title.replace(",", "|").replace("\n", "...") + "," + review.replace(",", "|").replace("\n", "...") + "\n")
print(bubble)
print(title)
print(review)
browser.find_element_by_xpath("//div[@class='ppr_rup ppr_priv_location_reviews_list']//div[@class='pageNumbers']/span[@data-page-number='" + str(pageNumber) + "']").click()
time.sleep(5)
pages -= 1
pageNumber += 1

f.close()

我收到以下错误:

Traceback (most recent call last):
File "C:/Users/Akshit/Documents/pycharmProjects/spanish.py", line 45, in <module>
f.write(bubble + "," + title.replace(",", "|").replace("\n", "...") + "," + review.replace(",", "|").replace("\n", "...") + "\n")
File "C:\Users\Akshit\AppData\Local\Programs\Python\Python35\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 10-18: character maps to <undefined>

Process finished with exit code 1

更新

我正在尝试解决此问题。最后我需要将日文评论翻译成英文以进行研究,所以我可以使用其中一个 google api 在编写代码之前翻译代码本身中的字符串,然后将其写入 csv 文件中。 ..

最佳答案

更新

中找到解决方案

Is it possible to force Excel recognize UTF-8 CSV files automatically?

正如@MaartenFabré 在评论中所建议的那样。

基本上根据我的理解,问题是 Excel 文件在读取使用 utf-8 编码的 csv 文件时有问题,所以当我直接用 Excel 打开 csv 文件(通过 python 生成)时...所有数据都已损坏。

解决办法是:

  1. 我将数据保存在文本文件中,而不是 python 中的 csv
  2. 打开 Excel
  3. 去导入外部数据,使用txt文件导入
  4. 选择文件类型为“delimited”,文件来源为“650001: Unicode (utf-8)”
  5. 选择“,”作为分隔符(您的选择)并导入
  6. 数据在 excel 中正确显示在每种语言的正确行和列中...日语、西类牙语、法语等。

再次感谢@MaartenFabre 的帮助!

关于python - 如何将非英文字符串存储到excel文件中,python3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com