如何解决如何删除csv中未被ascii感染的行
|| 我有一个很大的csv文件,看起来像这样: 关键字,展示次数 笛卡尔免费早餐,951 第451章 公司会议155 租车,356 聪明,1224 第064章 英è¯ç¿»è¯',160 我已经将文件读入字典,如下所示:# Read the CSV
filename = argv[1]
csvfile = open(filename,\'r\')
csvreader = csv.DictReader(csvfile)
rows = []
for row in csvreader:
rows.append(row)
我将如何删除带有非ASCII字符的行,这样我只能得到以下结果:
关键字,展示次数
笛卡尔免费早餐,951
公司会议155
租车,356
聪明,1224
第064章
简而言之:如果该行中存在任何非ASCII字符,则必须删除整行。
谢谢!
解决方法
import csv,sys
filename = sys.argv[1]
csvfile = open(filename,\'r\')
csvreader = csv.DictReader(csvfile)
rows = []
for row in csvreader:
try:
row[\'keywords\'].decode(\'ascii\')
rows.append(row)
except UnicodeDecodeError:
pass
print rows
,简单方法:您可以尝试对其进行解码,并捕获异常。
try:
string.decode(\'ascii\')
except UnicodeDecodeError:
print \"Not ascii\"
,万一您有兴趣,您很可能会丢掉好数据。在我看来,这似乎不是随意的垃圾:
>>> import unicodedata as ucd
>>> for x in open(\'unascii.txt\').read().decode(\'utf8\',\'replace\'):
... if x > u\'\\x7f\': print repr(x),ucd.name(x,\'<no name>\')
...
u\'\\u30d1\' KATAKANA LETTER PA
u\'\\u30bd\' KATAKANA LETTER SO
u\'\\u30b3\' KATAKANA LETTER KO
u\'\\u30f3\' KATAKANA LETTER N
u\'\\u82f1\' CJK UNIFIED IDEOGRAPH-82F1
u\'\\u8bed\' CJK UNIFIED IDEOGRAPH-8BED
u\'\\u7ffb\' CJK UNIFIED IDEOGRAPH-7FFB
u\'\\u8bd1\' CJK UNIFIED IDEOGRAPH-8BD1
>>>
请注意,该文件使用UTF-8成功解码(如@Ignacio所暗示),并且第一堆明显的乱码实际上是有道理的(日语pasocom == \“ personal computer \”,用片假名编写)和第二堆(英语翻译) )被Google翻译检测为中文,并翻译为“英语翻译”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。