簡體   English   中英

從文本中刪除所有無效字符(例如 \)

[英]Removing all invalid characters (e.g. \uf0b7) from text

我目前有幾個文本,其中有時包含字符“無效字符”,例如 \ 或 \。 我沒有辦法知道特定文本可能包含哪些無效字符代碼,我想知道是否有辦法確保清除字符串中所有類型的“無效字符”,因為稍后的過程(這取決於第三方包)無法接收包含它的字符串。

我試過尋找解決方案,但我得到的只是關於人們想要刪除的常規字符(例如“^%$&*”)的答案,他們將其歸類為無效字符,但是我想刪除/替換實際所有形式的字符“無效字符”

Python 庫編解碼器可能會有所幫助。 看看這里的文檔: https : //docs.python.org/2/library/codecs.htm

在我的用例中,我正在對具有非 ASCII 文本的文檔進行一些分析。 就我而言,忽略無效字符是可以接受的。 我使用以下行打開文件並能夠解析語料庫。

for filename in os.listdir(ROOT_DIR):
    with codecs.open(os.path.join(ROOT_DIR, filename), encoding = 'UTF8', errors ='replace' ) as f:

我有一個類似的問題。 事實證明,私有使用區域的字符屬於Co通用類別,如unicodedata category()返回的那樣。

我解決了我的問題如下:

import unicodedata

def is_pua(c):
    return unicodedata.category(c) == 'Co'

content = "This\uf0b7 is a \uf0b7string \uf0c7with private \uf0b7use are\uf0a7as blocks\uf0d7." 

"".join([char for char in content if not is_pua(char)])

這輸出:

'This is a string with private use areas blocks.'

暫無
暫無

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

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