每次存在换行符时,我都会有一个带有连字符的希腊文本。例如:
Καλημέρα ο καιρός είναι απίστευτος σή-
μερα και θα πάμε εκδρομή. Πρέπει να ετοι-
μασουμε πράγματα για πικ-νικ.
只有在插入换行符时我才需要找到字符“-”之间的单词边界,以便将其删除并将换行符“\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))
Καλημέρα ο καιρός είναι απίστευτος σήμερα
και θα πάμε εκδρομή. Πρέπει να ετοιμασουμε
πράγματα για πικ-νικ.
\S+ 匹配一个或多个非空格字符,其中 \s+ 匹配一个或多个空格字符。 re.sub 函数将用替换部分中存在的字符替换所有匹配的字符。所以这个 r'-\n(\S+)\s+' 正则表达式匹配连字符和后面的换行符以及跟在换行符后面的单词。 () 称为捕获组,用于捕获与捕获组中存在的模式匹配的字符。这里捕获组中存在的模式是 \S+ 。因此它匹配并捕获换行符后面的单词。您可以通过指定它的组索引号来引用替换部分中捕获的字符。
