Skip to main content
 首页 » 编程设计

python之查找所有希腊文本中带连字符的单词

2025年05月04日15java哥

每次存在换行符时,我都会有一个带有连字符的希腊文本。例如:

Καλημέρα ο καιρός είναι απίστευτος σή- 
μερα και θα πάμε εκδρομή. Πρέπει να ετοι- 
μασουμε πράγματα για πικ-νικ. 

只有在插入换行符时我才需要找到字符“-”之间的单词边界,以便将其删除并将换行符“\n”移动到去连字词的末尾。 我的结果应该是这样的:

Καλημέρα ο καιρός είναι απίστευτος σήμερα 
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε 
πράγματα για πικ-νικ. 

我在 python 中使用正则表达式,我的命令是

re.findall(r'\b.*?-\n.*?\s', data, re.UNICODE) 

获取边界之间的单词,但结果是:

Καλημέρα ο καιρός είναι απίστευτος σή- 
μερα 

不仅仅是这个词

σή-μερα 

有谁知道我做错了什么?希腊字符有问题吗?

请您参考如下方法:

你需要使用re.sub函数。,

>>> s = '''Καλημέρα ο καιρός είναι απίστευτος σή- 
μερα και θα πάμε εκδρομή. Πρέπει να ετοι- 
μασουμε πράγματα για πικ-νικ.''' 
>>> print(re.sub(r'-\n(\S+)\s+', r'\1\n', s)) 
Καλημέρα ο καιρός είναι απίστευτος σήμερα 
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε 
πράγματα για πικ-νικ. 

DEMO

\S+ 匹配一个或多个非空格字符,其中 \s+ 匹配一个或多个空格字符。 re.sub 函数将用替换部分中存在的字符替换所有匹配的字符。所以这个 r'-\n(\S+)\s+' 正则表达式匹配连字符和后面的换行符以及跟在换行符后面的单词。 () 称为捕获组,用于捕获与捕获组中存在的模式匹配的字符。这里捕获组中存在的模式是 \S+ 。因此它匹配并捕获换行符后面的单词。您可以通过指定它的组索引号来引用替换部分中捕获的字符。