第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 Python 3 查找/替換不可打印/非 ASCII 字符?

如何使用 Python 3 查找/替換不可打印/非 ASCII 字符?

尚方寶劍之說(shuō) 2021-11-02 16:53:23
我有一個(gè)文件,.csv 文件中的一些行由于行中某些字段中的時(shí)髦字符而阻塞了數(shù)據(jù)庫(kù)導(dǎo)入。我已經(jīng)搜索過(guò),找到了關(guān)于如何在 Python 3 中替換非 ascii 字符的文章,但沒(méi)有任何效果。當(dāng)我在 vi 中打開(kāi)文件并執(zhí)行 :set list 時(shí),在不應(yīng)該存在的行的末尾有一個(gè) $,而在下一行的開(kāi)頭有 ^I^I。這兩行應(yīng)該是一條連線,沒(méi)有 ^I 。我知道 $ 是行的結(jié)尾 '\n' 并試圖替換它們,但沒(méi)有任何效果。我不知道 ^I 代表什么,可能是一個(gè)制表符。我試過(guò)這個(gè)功能無(wú)濟(jì)于事:def remove_non_ascii(text):    new_text = re.sub(r"[\n\t\r]", "", text)    new_text = ''.join(new_text.split("\n"))    new_text = ''.join([i if ord(i) < 128 else ' ' for i in new_text])    new_text = "".join([x for x in new_text if ord(x) < 128])    new_text = re.sub(r'[^\x00-\x7F]+', ' ', new_text)    new_text = new_text.rstrip('\r\n')    new_text = new_text.strip('\n')    new_text = new_text.strip('\r')    new_text = new_text.strip('\t')    new_text = new_text.replace('\n', '')    new_text = new_text.replace('\r', '')    new_text = new_text.replace('\t', '')    new_text = filter(lambda x: x in string.printable, new_text)    new_text = "".join(list(new_text))    return new_text是否有一些工具可以準(zhǔn)確地告訴我這個(gè)令人討厭的角色是什么,然后找到一種方法來(lái)替換它?我像這樣打開(kāi)文件(.csv 被保存為 UTF-8)f_csv_in = open(csv_in, "r", encoding="utf-8")下面是兩行,應(yīng)該是問(wèn)題非 ascii 字符可見(jiàn)的一行。這兩行應(yīng)該是一行。注意第 37 行末尾的 $,第 38 行以 ^I^I 開(kāi)頭。vi 顯示的部分問(wèn)題是第 37 行有一個(gè)新行 $,我不希望它出現(xiàn)在那里。這應(yīng)該是一行。37 Cancelled,01-19-17,,basket,00-00-00,00-00-00,,,,98533,SingleSource,,,17035 Cherry Hill Dr,"L/o 1-19-17 @ 11:45am$38 ^I^IVictorville",SAN BERNARDINO,CA,92395,,,,,0,,,,,Lock:6111 ,,,No,No,,0.00,0.00,No,01-19-17,0.00,0.00,,01-19-17,00-00-00,,provider,,,Unread,00-00-00,,$
查看完整描述

3 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

在不可打印字符的情況下,內(nèi)置的字符串模塊有一些過(guò)濾掉不可打印或非 ascii 字符的方法,例如。與isprintable()功能。

一次過(guò)濾整個(gè)字符串的簡(jiǎn)潔方法如下所示


>>> import string

>>>

>>> str1 = '\nsomestring'

>>> str1.isprintable()

False

>>> str2 = 'otherstring'

>>> str2.isprintable()

True

>>>

>>> res = filter(lambda x: x in string.printable, '\x01mystring')

>>> "".join(list(res))

'mystring'

這個(gè)問(wèn)題過(guò)去曾對(duì)SO 進(jìn)行過(guò)一些討論,但是有很多方法可以做事,所以我理解這可能會(huì)令人困惑,因?yàn)槟梢允褂脧恼齽t表達(dá)式到str.translate()


可以做的另一件事是查看Unicode Categories,并根據(jù)您需要的一組符號(hào)過(guò)濾掉您的數(shù)據(jù)。


查看完整回答
反對(duì) 回復(fù) 2021-11-02
?
冉冉說(shuō)

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

一種刪除非 ascii 字符的簡(jiǎn)單方法可能是:

new_text = "".join([c for c in text if c.isascii()])

注意:如果您從文件中讀取此文本,請(qǐng)確保使用正確的編碼讀取


查看完整回答
反對(duì) 回復(fù) 2021-11-02
  • 3 回答
  • 0 關(guān)注
  • 276 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)