【问题标题】:Filter special characters, count them, and rewrite on another csv过滤特殊字符,计算它们,然后在另一个 csv 上重写
【发布时间】: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


【解决方案1】:

我不知道你为什么考虑不过滤汉字,而你只是在寻找一些特殊的字母。 This library可以过滤中文。

  1. 在您筛选的韩文、英文和数字列表顶部筛选中文:regex = "[^가-힣a-zA-Z0-9]" result=re.findall(regex,search_target)
  2. 过滤 1) 您寻找的特殊字符列表或 2) 您想要避免的特殊字符列表。

明智地选择更适合您的情况的选项,以避免尽可能多的异常,这样您就不必每次都添加更多过滤器。

将列表设为正则表达式。

然后,使用正则表达式遍历 180,000 行以过滤掉这些行。

更新您的正则表达式列表,直到您过滤所有内容。

【讨论】:

  • 谢谢。正如我上面提到的,您的第一个建议很耗时。我认为第二个建议对我来说更好,除了数字、韩文、英文和中文之外,计算每个字母。我会试试的
  • 不管怎样,先通过过滤数字、韩文、英文和中文,留下除特殊字母以外的任何内容。
  • 然后您可以选择列出您要查找的内容:■、△、? 等,或者列出您不想计算的内容:单位(例如:㎍、㎥ , ℃), (), '等
  • 要编码,我只需要添加Zhon 对吗?由于是单独的库,一行写不出来。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2016-03-12
  • 1970-01-01
相关资源
最近更新 更多