python - 为文本文件上的每个单词和符号添加引号

标签 python regex

我想在文本文件上的每个单词和符号之间添加引号。

例如;

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.00017'ninI.

我应该如何修改我的正则表达式或代码来实现这一目标?

谢谢

最佳答案

[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/

相关文章:

javascript - 正则表达式可选和组

javascript正则表达式禁止所有特殊字符

java - 使用java在文件中查找 token

python - 当url不变时如何使用python下载文件

python - Keycloak KubeAPI 认证失败

python - 如何将多项式回归线拟合到数据

python gflags 模块帮助标志不起作用

python - Sphinx 文档变量

iphone - 向后方向的 NSRegularExpression?

php - 函数只返回字符串中的字母数字字符?