使用 Python 在 CSV 中过滤阿拉伯语文本时遇到问题 - 输出中的非阿拉伯语符号

Trouble filtering Arabic text in CSV using Python - non-Arabic symbols in output

提问人:Omar Ibrahim 提问时间:5/23/2023 最后编辑:JosefZOmar Ibrahim 更新时间:5/23/2023 访问量:63

问:

我正在尝试使用 Python 尝试过滤包含某些单词/字符的宗教阿拉伯语文本(古兰经)中的经文。该程序运行良好,并在检查某些字符时输出带有过滤诗句的 CSV 文件,但在检查其他字符时,它会输出奇怪的非阿拉伯符号。例如,当检查具有 unicode 0x0644的阿拉伯字母“Lam”时,输出的 csv 是完美的,如下所示,但是当使用具有 unicode 0x0643的阿拉伯字母“Kaf”时,我会得到一堆符号,例如 سÙÙˆØ±ÙŽØ Ù Ø§Ù“ÙÙŽØ§ØªÙØÙŽØ©©Ù。提前感谢您的帮助。 我的代码:

import csv

mylist = []

with open("Arabic-Original.csv", "r", encoding="utf-8") as file:
    csvreader = csv.reader(file)
    for row in csvreader:
        mylist.append(row)

s = f'{chr(0x0644)}'
f = open("copiedverses.csv", "w", encoding="utf-8")
for i in range(len(mylist)):
    if s in mylist[i][0]:
        f.write(mylist[i][0] +"\n")
f.close()type here

使用Unicode值为“lam”,我得到如下内容: enter image description here 在此处输入图像描述0x0644

使用Unicode值为“kaf”,我得到这个: enter image description here 在此处输入图像描述0x0643

该代码适用于某些字母,但不适用于其他字母,我尝试了多个彼此相似的字母,但我仍然无法找出为什么对于某些字母它输出阿拉伯语而对于其他字母则不输出。 谢谢。

python csv unicode utf-8 阿拉伯语

评论

2赞 slothrop 5/23/2023
这是否可能是在Excel中加载文件而不是用Python编写文件的问题?例如 stackoverflow.com/a/60243234/765091
0赞 JosefZ 5/23/2023
编辑您的问题以改进您的最小可重复示例。特别是,不要在最小可重现示例中使用代码/数据/错误的(唯一)图像。复制实际文本,将其粘贴到问题中,然后将其格式化为代码。
0赞 Zach Young 5/23/2023
👋🏻 嗨,请包含一小部分CSV(作为文本,而不是图像),这将使我们能够看到好的和坏的。我想我们只需要样本有两行:一行是 Lam,一行是 Kaf。
0赞 Zach Young 5/23/2023
另外,我想要么:1)那些看起来很奇怪的字符已经在原始文件中,或者......2) 原始文件实际上不是 UTF-8 编码的。我已经阅读了您的代码,但我看不到您在代码中所做的任何可以将好的文本转换为您所看到的内容。但我是阿拉伯语和 RTL 脚本的新手。
2赞 Mark Tolonen 5/23/2023
此外,在编写将由 Excel 读取的 CSV 时,请使用 代替 。这将 UTF-8 BOM(字节顺序标记)代码点写入 Excel 用于将文件正确读取为 UTF-8 的签名。它将采用本地化编码,例如 Windows-1252(美国本地化的 Windows)或 Windows-1256(阿拉伯语本地化的 Windows)。utf-8-sigutf-8

答: 暂无答案