簡體   English   中英

如何在Python的正則表達式中包含Non-ascii字符

[英]How to include Non-ascii characters in regular expression in Python

我有一個文本文件,正在逐行閱讀。 在每一行中,如果有特殊字符,那么我將刪除特殊字符,為此,我使用了正則表達式。

fh = open(r"abc.txt","r+")
    data = fh.read()
    #print re.sub(r'\W+', '', data)
    new_str = re.sub('[^a-zA-Z0-9\n\.;,?!$]', ' ', data)

因此,在我的數據中,我只保留字母數字詞以及一些[。;,?!$]特殊符號,但與此同時,我還需要歐元符號(€),英鎊(£),日語日元(¥)和盧比符號(₹)。 但是這些不是以ASCII字符顯示的,因此當我將它們包含在正則表達式中時,例如-re.sub('[^ a-zA-Z0-9 \\ n。;,!! $€₹¥]','' ,數據) ,則顯示錯誤消息。 語法錯誤:第23行的文件preprocess.py中的非ASCII字符'\\ xe2',但未聲明編碼

您可以使用Unicode字符轉義符 例如,上面的歐元字符可以表示為\€ 不管編碼類型如何,四位數是Unicode編號。 在正則表達式示例中,它可能類似於:

[^a-zA-Z0-9\u20ac]

也許不是解決方案,但可能是部分解決方案。 將此用作每個Python 2文件的前兩行:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

這使Python 2切換到UTF-8(unicode)模式。 在Python 3中,這是默認設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM