我想在文本文件上的每个单词和符号之间添加引号。
例如;
Türkiye ya da resmî adıyla Türkiye Cumhuriyeti, topraklarının büyük bölümü Anadolu'ya, küçük bir bölümü ise Balkanlar'ın uzantısı olan Trakya'ya yayılmış bir ülke.
变成->
"Türkiye" "ya" "da" "resmî" "adıyla" "Türkiye" "Cumhuriyeti" "," "topraklarının" "büyük" "bölümü" "Anadolu'ya" "," "küçük" "bir" "bölümü" "ise" "Balkanlar'ın" "uzantısı" "olan" "Trakya'ya" "yayılmış" "bir" "ülke" "."
为此,我写了这样一段代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re, codecs, io
with io.open ("turkish.txt", "r", encoding="utf-8") as myfile:
text=myfile.read()
replacer = re.compile("([\w'-]+|[.,!?;()%])", re.UNICODE)
output_text = replacer.sub(r'"\1"', text).replace('""','" "')
text_file = open("Output.txt", "w")
text_file.write(output_text.encode('utf8'))
text_file.close()
在上面的例子中,替换就可以了。
但对于这样一个例子,
İmparatorluk zirvesini 15 ve 17'nin arasında, özelikle I. Süleyman döneminde 10.000'lerde yaşadı.
替换发生如下;
"İmparatorluk" "zirvesini" "15" "ve" "17'" "nin" "arasında", "özelikle" "I" "." "Süleyman" "döneminde" "10" "." "000'" "lerde" "yaşadı" "."
如你所见,10.000
是一个数字,17'nin
是在一起,而I.
指的是罗马数字排名,所以我希望它们分开为
10.000
、17'nin
和 I.
。
我应该如何修改我的正则表达式或代码来实现这一目标?
谢谢
最佳答案
将 [IVXLCDM]+\.|[\d\.]+(?:'\w+)?
添加到正则表达式模式的开头匹配“10.000”和“10.000'lerde” “和我。”正如预期的那样。
replacer = re.compile(r"\b([IVXLCDM]+\.|[\d\.]+(?:'\w+)?|[\w'-]+|[.,!?;()%])", re.UNICODE)
关于python - 为文本文件上的每个单词和符号添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035876/