从数字、符号和其他语言中清洗句子

cleaning a sentence from numbers, signs and other languages

我有一个包含日语句子的 txt 文件。我想删除所有非日语单词。例如数字、英文字母或任何其他非日语语言、符号、符号。有快速的方法吗?谢谢

Hi !こんにちは、私の給料は月額10000ドルです。 XO XO
私はあなたの料理が大好きです
私のフライトはAPX1999です。
私はサッカーの試合を見るのが大好きです。

要删除的字词: 你好 ! XO XO 10000 APX1999

最简单的方法是这样的:

s = "Hi !こんにちは、私の給料は月額10000ドルです。 XO XO 私はあなたの料理が大好きです私のフライトはAPX1999です。私はサッカーの試合を見るのが大好きです"

no_ascii = ''
for c in s:
    ascii_code = ord(c)
    if ascii_code > 127 or ascii_code == 0:
        no_ascii += c

print(no_ascii)
こんにちは、私の給料は月額ドルです。私はあなたの料理が大好きです私のフライトはです。私はサッカーの試合を見るのが大好きです
import re
import string
s = '''Hi !こんにちは、私の給料は月額10000ドルです。 XO XO
私はあなたの料理が大好きです
私のフライトはAPX1999です。
私はサッカーの試合を見るのが大好きです。
'''
# replace all ascii chars 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
replaced = re.sub(f'[{string.printable}]', '', s)
print(replaced)

输出

こんにちは、私の給料は月額ドルです。私はあなたの料理が大好きです私のフライトはです。私はサッカーの試合を見るのが大好きです。

Python 3.7+ 具有用于 str 类型的 isascii() 函数。此代码将删除 ascii 字符(不一定是所要求的字符),但可能有助于提出策略建议。

with open('japanese.txt') as infile:
    print(''.join([c for c in infile.read() if c == '\n' or not c.isascii()]))