input输入多行文本:删除“首先 其次 此外 总的来说”


input允许多行输入
233.3表示停止输入

input输入多行文本

文本

(空行) (空行) (空行) 正文 (空行) (空行) (空行) 正文 (空行) (空行) (空行) 正文 (空行) (空行) (空行) (空行) 正文 (空行) 正文 (空行) 正文 (空行) (空行) (空行) 正文 (空行) (空行) (空行) 正文 (空行) (空行) 正文 (空行) 正文 (空行) 正文 (空行) 正文 (空行) (空行)

把
>2个空行
正文
>1个空行

查找替换:'# 正文'


在
正文
(空行)
正文
(空行)
正文
(空行)
正文
(空行)
里每个段落的第1个字至第1个标点符号那里,通常是,逗号,看看有
“首先 其次 此外 总的来说”
随机删除前3个或者后3个。
比如删除“首先 其次 此外“或者保留“首先 总的来说”

233.3
Traceback (most recent call last):
  File "/storage/emulated/0/qpython/删除行 1.3.2.1.查找替换“首先其次此外总的来说”1.1. 1..2.py", line 51, in 
    new_text = process_text(text)
               ^^^^^^^^^^^^^^^^^^
  File "/storage/emulated/0/qpython/删除行 1.3.2.1.查找替换“首先其次此外总的来说”1.1. 1..2.py", line 32, in process_text
    idx = random.randint(0, len(keywords)  - 1)
          ^^^^^^
NameError: name 'random' is not defined
1|:/ $

由于漏掉了导入random模块,在程序开头添加以下代码即可:

import random

然后再次运行程序就可以了。

input输入多行文本:删除“首先 其次 此外 总的来说”_第1张图片

你的输入格式比较特殊,需要按照一定格式进行处理。以下是代码实现:

def process_text(text):
    # 先按照多个空行分割文本
    paragraphs = text.split('\n\n\n\n')
    new_text = ''
    for para in paragraphs:
        # 去除段落开头结尾的空白符
        para = para.strip()
        if not para:
            continue
        # 替换掉指定字符
        para = para.replace('>2个空行\n', '')
        para = para.replace('>1个空行\n', '# 正文\n')
        # 将每个段落按照标点符号分割成句子
        sentences = para.split('。')
        new_para = ''
        for sent in sentences:
            # 如果句子为空或者只包含空白符则跳过
            if not sent.strip():
                continue
            # 找到第一个标点符号的位置
            punc_index = len(sent)
            for punc in [',', '。', ',', '.', '!', '?']:
                index = sent.find(punc)
                if index != -1 and index < punc_index:
                    punc_index = index
            # 我们只考虑第一个标点符号之前的内容
            first_part = sent[:punc_index]
            # 随机删除前3个或者后3个
            keywords = ['首先', '其次', '此外', '总的来说']
            for i in range(3):
                if keywords:
                    idx = random.randint(0, len(keywords) - 1)
                    keyword = keywords.pop(idx)
                    if keyword in first_part:
                        first_part = first_part.replace(keyword, '')
            # 将处理后的内容拼接起来
            new_sent = first_part + sent[punc_index]
            new_para += new_sent
        # 将处理后的段落拼接到最终的文本中
        new_text += new_para + '\n\n'
    return new_text

# 读取多行输入,直到输入为"233.3"
text = ''
while True:
    line = input()
    if line == '233.3':
        break
    text += line + '\n'

new_text = process_text(text)
print(new_text)

你可以将上面的代码复制到Python环境中运行,输入你的多行文本,然后等待程序输出即可。

你可能感兴趣的:(python,青少年编程,自动化,数据库,中文分词)