gpt4 book ai didi

python - 如何在列表项python中保留分隔符

转载 作者:行者123 更新时间:2023-12-05 08:10:38 26 4
gpt4 key购买 nike

我正在编写一个程序,该程序使用标点符号作为何时拆分文本的分隔符来混淆文本中的子句。

目前我的代码有一个很大的列表,其中每个项目都是一组子句。

import re
from random import shuffle
clause_split_content = []

text = ["this, is. a test?", "this: is; also. a test!"]

for i in text:
clause_split = re.split('[,;:".?!]', i)
clause_split.remove(clause_split[len(clause_split)-1])
for x in range(0, len(clause_split)):
clause_split_content.append(clause_split[x])
shuffle(clause_split_content)
print(*content, sep='')

目前结果使文本困惑,没有保留用作分隔符的标点符号来拆分它。输出将是这样的:

a test this also this is a test is

我想在最终输出中保留标点符号,所以它看起来像这样:

a test! this, also. this: is. a test? is;

最佳答案

我认为您只是为了您的目的使用了错误的 re 函数。 split() 排除了你的分隔符,但你可以使用另一个函数,例如findall() 手动选择你想要的所有单词。例如,使用以下代码我可以创建您想要的输出:

import re
from random import shuffle

clause_split_content = []

text = ["this, is. a test?", "this: is; also. a test!"]

for i in text:
words_with_seperator = re.findall(r'([^,;:".?!]*[,;:".?!])\s?', i)
clause_split_content.extend(words_with_seperator)

shuffle(clause_split_content)
print(*clause_split_content, sep=' ')

输出:

this, this: is. also. a test! a test? is;

模式 ([^,;:".?!]*[,;:".?!])\s? 简单地接受所有不是分隔符的字符,直到分隔符出现见过。这些字符都在匹配组中,这会创建您的结果。 \s? 只是去掉单词之间的空格。

关于python - 如何在列表项python中保留分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72408830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com