Python 如何标记波斯字符串并将其保存到txt文件中

Python 如何标记波斯字符串并将其保存到txt文件中,python,nlp,Python,Nlp,我正在尝试标记A.txt并将其保存到B.txt文件中 我试图处理的字符串是波斯语,我想用波斯语逐字保存,这是我的代码 这是main.py import LevelOne import save_file import nltk original_data = " ".join(open("A.txt"))print('Processing') save_file.saving(LevelOne.spliter(original_data)) print('Done') 这是一级 import

我正在尝试标记A.txt并将其保存到B.txt文件中 我试图处理的字符串是波斯语,我想用波斯语逐字保存,这是我的代码

这是main.py

import LevelOne
import save_file
import nltk

original_data = " ".join(open("A.txt"))print('Processing')
save_file.saving(LevelOne.spliter(original_data))
print('Done')
这是一级

import re 
import persian
import stop_word


def spliter(text):
    data = re.split(r'\W+',text)
    tokenized = [word for word in data if word not in 
    stop_word.stop_words]
    return tokenized
这是节约的一部分

# -*- coding: utf-8 -*-

def saving(infile):
    outfile = open('B.txt', 'w')
    replacements = {'پ':'\u067e',
          'چ':'\u0686','ج':'\u062c', 'ح':'\u062d','خ':'\u062e', 
          'ه':'\u0647','ع':'\u0639', 'غ':'\u063a','ف':'\u0641',                                           
          'ق':'\u0642','ث':'\u062b', 'ص':'\u0635','ض':'\u0636', 
          'گ':'\u06af','ک':'\u06a9', 'م':'\u0645','ن':'\u0646', 
          'ت':'\u062a','ا':'\u0627', 'ل':'\u0644','ب':'\u0628', 
          'ي':'\u06cc','س':'\u0633', 'ش':'\u0634','و':'\u0648', 
          'ئ':'\u0626','د':'\u062f', 'ذ':'\u0630','ر':'\u0631', 
          'ز':'\u0632','ط':'\u0637', 'ظ':'\u0638','ژ':'\u0698', 
          'آ':'\u0622','ی':'\u064a', '؟':'\u061f'}
    data = " ".join(infile)
    print(data)
    for line in data:
        for src, target in replacements.items() :
            line = line.replace(src, target)
            outfile.write(line)
    outfile.close()
但是当我打开B.text文件时,我看到了这个

Ú Ù Ù¾Ø³Ø Ø³Ù Ø Ù Ø ÙˆØ ÛŒ Ú Ù Ø Ø Ø ØŸ
原始文件如下所示

گل پسر
سلام خوبی چه خبر؟

您不需要替换Unicode字符。 在Python3中,默认情况下,文件将保存在utf-8中。 然而,为了标记句子和单词,由于NLTK不支持波斯语,您可能需要指定标点符号

下面是一个没有标点符号的虚拟标记化示例:

tokenized = [
    line.strip().split(' ')
    for line in open("A.txt")
]

with open('B.txt', "w") as f:
    for line in tokenized:
        for word in line:
            f.write(word+"\n")
        f.write("\n")
    f.close()
A.txt:

گل پسر.
سلام، خوبی چه خبر؟
B.txt:

گل
پسر.

سلام،
خوبی
چه
خبر؟
گل
پسر
.

سلام
،
خوبی
چه
خبر
؟

但是,如果您想基于标点符号进行标记化,这里是一个简单的解决方案(没有NLTK或任何额外的库):

B.txt:

گل
پسر.

سلام،
خوبی
چه
خبر؟
گل
پسر
.

سلام
،
خوبی
چه
خبر
؟


您不需要替换Unicode字符。 在Python3中,默认情况下,文件将保存在utf-8中。 然而,为了标记句子和单词,由于NLTK不支持波斯语,您可能需要指定标点符号

下面是一个没有标点符号的虚拟标记化示例:

tokenized = [
    line.strip().split(' ')
    for line in open("A.txt")
]

with open('B.txt', "w") as f:
    for line in tokenized:
        for word in line:
            f.write(word+"\n")
        f.write("\n")
    f.close()
A.txt:

گل پسر.
سلام، خوبی چه خبر؟
B.txt:

گل
پسر.

سلام،
خوبی
چه
خبر؟
گل
پسر
.

سلام
،
خوبی
چه
خبر
؟

但是,如果您想基于标点符号进行标记化,这里是一个简单的解决方案(没有NLTK或任何额外的库):

B.txt:

گل
پسر.

سلام،
خوبی
چه
خبر؟
گل
پسر
.

سلام
،
خوبی
چه
خبر
؟


我不明白这个问题。似乎你对Unicode有问题。。。它与标记化有什么关系?您希望在
B.txt
中看到什么?你想如何用换行符来分隔每个单词?我不明白这个问题。似乎你对Unicode有问题。。。它与标记化有什么关系?您希望在
B.txt
中看到什么?您希望如何用换行符分隔每个单词?