我有一个非常大的csv文件,如下所示:
关键词,印象
descargar juegos免费,951
パã,²ã,ンkakaku com,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字符的行,使我最终只得到:
关键词,印象
descargar juegos免费,951
公司会议,155
租车,356辆
智能,1224
吉他标签,064
简而言之:如果行中存在任何非ascii字符,则必须删除整行。
谢谢!
发布于 2011-04-14 06:54:25
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发布于 2011-04-14 06:48:59
简单的方法:您可以尝试解码它,并捕获异常。
try:
string.decode('ascii')
except UnicodeDecodeError:
print "Not ascii"发布于 2011-04-14 09:01:08
如果你感兴趣,你可以扔掉好的数据;在我看来,它不是随机的垃圾:
>>> 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 ==“个人计算机”,用片假名编写),第二组(英语翻译)被谷歌翻译检测为中文并被翻译为“英语翻译”。
https://stackoverflow.com/questions/5656528
复制相似问题