【发布时间】:2017-08-08 04:06:00
【问题描述】:
我正在尝试查看 csv 中是否有特殊字符。该文件由一列组成,大约有 180,000 行。由于我的文件包含韩文、英文和中文,我添加了가-힣``A-Z``0-9,但我不知道应该如何不过滤中文字母。或者有没有更好的方法来做到这一点?
我要找的特殊字母有:■、△、?等
我不想数的特殊字母是:单位(ex : ㎍, ㎥, ℃)、()、'等
在 stackflow 上搜索,许多问题都考虑指定特殊字母以首先查找。但就我而言,这很困难,因为我有 180,000 条记录,而且我不知道其中实际包含哪些字母。就我而言,只有三种语言;韩文、英文、中文。
这是我目前的代码:
with open("C:/count1.csv",'w',encoding='cp949',newline='') as testfile:
csv_writer=csv.writer(testfile)
with open(file,'r') as fi:
for line in fi:
x=not('가-힣','A-Z','0-9')
if x in line :
sub=re.sub(x,'*',line.rstrip())
count=len(sub)
lst=[fi]+[count]
csv_writer.writerow(lst)
使用import re
regex=not'[가-힣]','[a-z]','[0-9]'
file="C:/kd/fields.csv"
with open("C:/specialcharacter.csv",'w',encoding='cp949',newline='') as testfile:
csv_writer=csv.writer(testfile)
with open(file,'r') as fi:
for line in fi:
search_target = line
result=re.findall(regex,search_target)
print("\n".join(result))
【问题讨论】:
-
我建议你看看他们的 ascii 或其他代码,如这篇文章:stackoverflow.com/questions/227459/…。然后,您很可能必须手动解析您想要或不想要的字符。
-
@Landmaster 嗯,如果我没记错的话,您的链接显示将字母更改为 int 值并将它们相加,对吗?我只需要计算特殊字符的出现次数。
-
哦,是的,这篇文章向您展示了如何添加它们,但我是说您可以将字符转换为 unicode 或 ascii,因为我相信这些都是详尽的。
-
相反,您可以将所有字符放入字典中并在字典中包含操作,例如 {'a': True, '#': False} 然后使用 True 或 False 来指示是否你应该过滤还是不过滤。
-
@Landmaster 好的。我得到它。我也试试这个方法
标签: python regex csv special-characters