我在python中遇到了一个问题,即用句子的行尾字符分割文本的一部分

2024-09-28 22:28:26 发布

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

我想分析一个xml文件和我的程序的一部分分割成句子的数据,但我的行尾字符消失了…我需要他们添加注释与xml标记在我的句子的开头和结尾

目前我有:

import re

line_end_chars = "!", "?", ".",">"


regexPattern = '|'.join(map(re.escape, line_end_chars))

line_list = re.split(regexPattern, texte)

问题

如果我用文本运行这个代码

" Je pense que cela est compliqué de coder. Où puis-je apprendre?"

这会给我:

["Je pense que cela est compliqué de coder",
"Où puis-je apprendre"] 

而不是我想要的,那就是:

["Je pense que cela est compliqué de coder.",
"Où puis-je apprendre?"] 

然后我可以编写.replace代码来添加我的xml标记


Tags: relinedexml句子queestje
2条回答

一种可能的解决方案是使用re.sub而不是re.split,然后使用str.splitlines()

import re

line_end_chars = "!", "?", ".",">"
s = "Je pense que cela est compliqué de coder. Où puis-je apprendre?"

print( re.sub('(' + '|'.join(re.escape(ch) for ch in line_end_chars) + ')\s*', r'\1\n', s).splitlines() )

印刷品:

['Je pense que cela est compliqué de coder.', 'Où puis-je apprendre?']

我有两种方法可以考虑这样做

import re

# Method 1)
line_end_chars = "!", "?", ".", ">"
regexPattern = '|'.join(map(re.escape, line_end_chars))
s = "Je pense que cela est compliqué de coder. Où puis-je apprendre?"
linelist = []

for substr, delim in zip(re.split(regexPattern, s), re.findall(regexPattern, s)):
    linelist.append(substr+delim)

# Method 2)
line_end_chars = ["!", "?", ".", ">"]
s = "Je pense que cela est compliqué de coder. Où puis-je apprendre?"
linelist = []

temp_str = ""
for c in s:
    if c in line_end_chars:
        linelist.append(temp_str+c)
        temp_str = ""
    else:
        temp_str += c

两种打印

['Je pense que cela est compliqué de coder.', 'Où puis-je apprendre?']

相关问题 更多 >