首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除csv中未感染ascii的行

如何删除csv中未感染ascii的行
EN

Stack Overflow用户
提问于 2011-04-14 06:40:33
回答 3查看 1.5K关注 0票数 1

我有一个非常大的csv文件,如下所示:

关键词,印象

descargar juegos免费,951

パã,²ã,ンkakaku com,451.

公司会议,155

租车,356辆

智能,1224

吉他标签,064

è<±è‘ç»èè’,160

我已经将文件读入字典,如下所示:

代码语言:javascript
复制
# 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字符,则必须删除整行。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-14 06:54:25

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2011-04-14 06:48:59

简单的方法:您可以尝试解码它,并捕获异常。

代码语言:javascript
复制
try:
    string.decode('ascii')
except UnicodeDecodeError:
    print "Not ascii"
票数 3
EN

Stack Overflow用户

发布于 2011-04-14 09:01:08

如果你感兴趣,你可以扔掉好的数据;在我看来,它不是随机的垃圾:

代码语言:javascript
复制
>>> 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 ==“个人计算机”,用片假名编写),第二组(英语翻译)被谷歌翻译检测为中文并被翻译为“英语翻译”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5656528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档