在 Python 中使用正则表达式在文本中的阿拉伯语波斯语和英语单词之间插入逗号

问题描述

我有一个包含 32000 行的 txt 文件。数据为阿拉伯-波斯语,但每行包含第一个单词的罗马音译。

دێان diêyan بنووڕه‌ ‌دگان نگا دگان‌

دێان‌ شكنه diêyan şêkêne دگان‌ شكنه

دیدن dîdin بنووڕه‌ ‌دید نگا دید و تركیباتش

我需要在罗马音标前后加一个逗号。我已经写了这个,但它在罗马转录的每个字符后面放了一个逗号:

import re

output = open("output.txt","w")
input = open("sample.txt").read()

for word in input:
    output.write(re.sub(r'^([a-z])',r',\1',word))


output.close() 

有什么建议吗?

解决方法

试试

re.sub('([a-z].*[a-z])',r',\1,',word)

输出文件:

دێان,diêyan,بنووڕه‌ ‌دگان نگا دگان‌

دێان‌ شكنه,diêyan şêkêne,دگان‌ شكنه

دیدن,dîdin,بنووڕه‌ ‌دید نگا دید و تركیباتش

但是这个词必须以 [a-z] 开头和结尾。

,

试试这个:

re.sub(r'(([a-zêîş]+ ?)+)',\1',word))

它将为您提供的示例文本生成以下输出:

دێان,diêyan بنووڕه‌ ‌دگان نگا دگان‌
دێان‌ شكنه,diêyan şêkêne دگان‌ شكنه
دیدن,dîdin بنووڕه‌ ‌دید نگا دید و تركیباتش

您需要添加模式中可能包含的任何特殊字符。