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

2024-06-16 10:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在文本文件的每个单词和符号之间加引号。你知道吗

例如:

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.。你知道吗

我应该如何修改我的正则表达式或代码来实现这一点?你知道吗

谢谢你


Tags: textreaddafileyabirise
2条回答

[IVXLCDM]+\.|[\d\.]+(?:'\w+)?添加到regex模式的开头将匹配预期的“10.000”和“10.000'lerde”以及“I.”。你知道吗

replacer = re.compile(r"\b([IVXLCDM]+\.|[\d\.]+(?:'\w+)?|[\w'-]+|[.,!?;()%])", re.UNICODE)
with open("turkish.txt", "r") as myfile:
    text=myfile.read()

output_text = text.split(" ")

with open("Output.txt", "w",) as outfile:
    for word in output_text:
        outfile.write(' "'+ word + '" ')

也许是更好的解决办法

相关问题 更多 >