cari

Rumah  >  Soal Jawab  >  teks badan

python3.x - Cara menggunakan maketrans dalam python dalam fail utf-8

Saya menulis fail untuk memproses teks, iaitu menggantikan semua simbol dalam teks dengan ruang. Gunakan maketrans dan terjemah dalam python. Ia adalah perkara biasa apabila menggunakan fail berkod ASCII, tetapi apabila menggunakan fail UTF-8, ralat dilaporkan, menunjukkan bahawa parameter dalam maketrans tidak sama panjang, tetapi jelas panjangnya sama:

Fail "/Users/lgq/Desktop/p3.py", baris 10, dalam text_to_words

"abcdefghijklmnopqrstuvwxyz                                                   ") 

ValueError: dua argumen maketrans pertama mesti mempunyai panjang yang sama

Saya telah menyemak dan ia mengatakan bahawa maketrans tidak boleh digunakan di bawah utf-8 Jadi bagaimana saya harus menggantikan aksara di bawah utf-8. Tolong beri saya nasihat.

def text_to_words(the_text):
    """ 
        Return a list of words with all punctuation removed,
        and all in lowercase.
    """
    my_substitutions = the_text.maketrans(
        # If you find any of these
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~'\",
        # Replace them by these
        "abcdefghijklmnopqrstuvwxyz                                            ")
    # Translate the text now.
    cleaned_text = the_text.translate(my_substitutions)
    wds = cleaned_text.split()
    return wds


def get_words_in_book(filename):
    """ Read a book from filename, and return a list of its words."""
    f = open(filename, "r", encoding = "utf-8")
    content = f.read()
    f.close()
    wds = text_to_words(content)
    return wds


book_words = get_words_in_book("alice.txt")
print("There are {0} words in the book, the first 100 are\n{1}".
        format(len(book_words), book_words[:100]))
过去多啦不再A梦过去多啦不再A梦2742 hari yang lalu765

membalas semua(1)saya akan balas

  • 滿天的星座

    滿天的星座2017-05-18 11:00:56

    Pertama sekali, panjang kedua-dua rentetan ini tidak sama " ialah aksara dan \ juga merupakan aksara
    Anda boleh menggunakan len. () Semak
    Bagi soalan rentetan, adalah lebih baik untuk menunjukkan versi python" 是一个字符, \ 也是一个字符
    你可以用 len() 查看。
    然后关于字符串什么的问题,最好说明 python 的版本

    maketrans

    maketrans panjang parameter tidak sama

     my_substitutions = the_text.maketrans(
            # If you find any of these
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~'\",
            # Replace them by these
            "abcdefghijklmnopqrstuvwxyz                                            ")

    Kod ujian:

    from string import translate, maketrans
    
    def text_to_words(the_text):
        """ 
            Return a list of words with all punctuation removed,
            and all in lowercase.
        """
        my_substitutions = maketrans(
            # If you find any of these
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~'\",
            # Replace them by these
            "abcdefghijklmnopqrstuvwxyz                                          ")
        # Translate the text now.
        cleaned_text = the_text.translate(my_substitutions)
        wds = cleaned_text.split()
        return wds
    
    text_to_words('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&()*+,-./:;<=>?@[]^_`{|}~\'\测试')

    keluaran

    ['abcdefghijklmnopqrstuvwxyz', '\xe6\xb5\x8b\xe8\xaf\x95']

    Ini adalah hasil daripada menjalankan python2🎜

    balas
    0
  • Batalbalas