如何在Python中将只有印地语脚本与包含印地语,英语和数字混合的文件分开?

时间:2017-06-10 13:53:41

标签: python unicode machine-translation indic

我有一个包含

等行的文件
 ted    1-1 1.0 politicians do not have permission to do what needs to be 
 done.  

 राजनीतिज्ञों के पास जो कार्य करना चाहिए, वह करने कि अनुमति नहीं है.

我必须编写一个逐行读取文件的程序,并将输出提供给仅包含印地语部分的文件。这里第一个单词表示最后两个段的来源。另外,最后两个句子是彼此的翻译。 基本上,我试图用这个文件创建一个平行的语料库。

2 个答案:

答案 0 :(得分:3)

您可以通过检查Unicode字符来执行此操作。

import codecs,string
def detect_language(character):
    maxchar = max(character)
    if u'\u0900' <= maxchar <= u'\u097f':
        return 'hindi'

with codecs.open('letter.txt', encoding='utf-8') as f:
    input = f.read()
    for i in input:
        isEng = detect_language(i)
        if isEng == "hindi":
            #Hindi Character
            #add this to another file
            print(i,end="\t")
            print(isEng)

希望这有帮助

答案 1 :(得分:1)

使用正则表达式过滤掉其中包含字母/数字的行。

import re

hindi = []
for line in open('file.txt').readlines():
   if re.search(r'[a-zA-Z0-9]', line) or (not line.strip()):
       continue
   hindi.append(line)

with open('hindilines.txt', 'w') as f:
    f.write('\n'.join(hindi))