【问题标题】:Decoding from CSV - French and Spanish special characters从 CSV 解码 - 法语和西班牙语特殊字符
【发布时间】:2023-03-21 04:00:01
【问题描述】:

我正在像这样从报废过程中对我的 CSV_table 进行编码:

with open("Raw_table.csv", 'w',encoding="utf-8") as outfile:
   csv_writer = csv.writer(outfile, delimiter=';', quotechar='|', quoting=csv.QUOTE_MINIMAL,)

通常,当我想使用它们时,我会使用这样的 csv_parser:

def parse_csv(content, delimiter = ';'):  
  csv_data = []
  for line in content.split('\n'):
    csv_data.append( [x.strip() for x in line.split( delimiter )] ) # strips spaces also
  return csv_data


list_raw=parse_csv(open('Raw_RC.csv','r',encoding="utf-8").read())

当我从美国、英国网站报废时,它可以工作。 在这里,我必须处理法语、西班牙语和德语的事情,当尝试使用 parse_csv 从 csv 读取时,它给了我这样的错误@

    csv_writer.writerow([k] + v)
ascii' codec can't decode byte 0xc3 in position 23: ordinal not in range(128)

我该如何解决这个问题?

附属问题:

  1. 我是否应该对 CSV 进行编码,以另一种方式废弃站点(例如,以不同的方式设置 BeautifoulSoup),否则当它是德语或法语时?
  2. 这个编码问题可能与我从报废中得到的所有\xa0 有关?我不这么认为,因为我能够解析英国、美国的 cdv,而它们也有很多。

感谢您花时间解决这个问题的每一字节! :)

【问题讨论】:

标签: python csv utf-8 character-encoding beautifulsoup


【解决方案1】:

使用法语/德语/西班牙语字符(以该语言编写的网站)时,不要使用:encoding='utf-8',而是使用encoding='ISO-8859-1'

所以写:

with open("Raw_table.csv", 'w',encoding="ISO-8859-1") as outfile:
   csv_writer = csv.writer(outfile, delimiter=';', quotechar='|', quoting=csv.QUOTE_MINIMAL,)

阅读:

list_raw=parse_csv(open('Raw_RC.csv','r',encoding="ISO-8859-1").read())

\xa0 问题不相关。事实上,它只出现在 UTF-8 中。所以我的具体法文/德文版式不相关。 要进一步讨论这个问题(这不是问题的核心),请参阅 Tripleee 建议的以下link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-17
    • 2011-11-03
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多