簡體   English   中英

無法從CSV文件讀取非ASCII字符

[英]Unable to read non ascii characters from csv file

我正在嘗試讀取每行包含一個句子的csv文件。 每個句子可能包含諸如漢字之類的外來詞。 我想刪除或忽略這些外來字符,僅返回英文單詞或ascii單詞。

字符串在文件中的外觀示例:

'小心 Careful'

所需輸出:小心

import csv
from string import ascii_letters, punctuation

def remove_non_ascii(string):
    ascii_letters = set(ascii_letters)
    tokens = nltk.word_tokenize(string)
    ascii_words = [word for word in tokens if any(letter in ascii_letters for letter in word)]
    return ascii_words

with open(job_file, mode = 'r', encoding = 'utf8') as infile:   
    line_reader  = csv.reader(infile)
    for row in line_reader:
        new_line = remove_non_ascii(row[1])
        print (new_line)
        if row[1]:
            open(output_file, 'a', newline='', encoding = 'utf8') as outfile:
            line_writer = csv.writer(outfile)
            line_writer.writerow('')             

這是我運行該代碼時遇到的錯誤。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 2848: invalid start byte

如果我將編碼從utf8更改為cp1252,該錯誤就會消失,因為漢字會轉換為“ ????”。 是否可以刪除那些不需要的字符並僅返回符合ASCII的字符?

如果僅對輸入文件的ascii部分感興趣,則可以使用

open(job_file, mode = 'r', encoding = 'ascii', errors = 'ignore')

這應該忽略所有不符合ASCII的字符。 open()的Python文檔為您提供了更多您可能要看的選項。

暫無
暫無

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

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