提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
本文能解决的问题
1. UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 0: invalid continuation byte
2. UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xac in position 6340: illegal multibyte sequence
3. 为什么写入csv的文字被逗号‘,’隔开了
4. 不会操作/靠百度操作csv文件的问题
提示:其实读txt或csv都可以互通,只要一个能读出来,就能格式化转换。
按照我粗浅的理解,txt好读一点,因为我这份数据用csv方法根本打不开,只能改后缀名为txt
一、最终代码
提示:本段为python3语言,为本作者在学习中解决问题后的总结,参考了如下文章
为什么写入csv的文字被逗号‘,’隔开了
python逐行写入到csv文件
# -------------本段代码做第一步数据清洗,去除非utf8的内容,避免出错------------
# 判断是否是中文,或逗号。句号,换行
def is_chinese(uchar):
if (uchar >= '\u4e00' and uchar <= '\u9fa5') or uchar==',' or uchar=='。' or uchar=='\n':
return True
else:
return False
# 判断一行语句,进行检查
def reserve_chinese(content):
content_str = ''
for i in content:
if is_chinese(i):
content_str += i
return content_str
# 打开源数据文件txt,创建一个csv文件,读一行txt,写一行csv
def utf_data():
new_item_csv = 'utf_xihu'
with open('data/xihu.txt', 'r', encoding='utf-8') as read:
with open('{}.csv'.format(new_item_csv), 'w', encoding='utf-8', newline='') as f_write:
writer = csv.writer(f_write, dialect='excel')
read_line=read.readline()
while read_line:
# 去除空行(如果这是一个空行,则跳过)
if read_line.isspace():
read_line=read.readline()
# 写入判断好的数据
# []的作用是避免新数据被逗号分隔,如果不加[],“新,的,数,据,就,是,这,样”
writer.writerow([reserve_chinese(read_line)])
read_line=read.readline()
utf_data()
二、最终效果
去除了非法字符的utf8数据,本处是西湖景区的游客评价
原来的txt长这样
总结
是不是瞬间清除了影响后续操作的捣蛋鬼呢~
那些乱七八糟的非法字符,让我后续操作各种报错,本次特地把他们清理了个干净,终于可以安心做分析了