找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 147|回复: 0

问问AI:如何按段落分割文本

[复制链接]
发表于 2025-10-5 15:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
作者:微信文章
w1.jpg

本文我将结合之前用AI实现的简单程序,分享下平时我是如何利用AI学习编程的。

最近在自娱自乐开发软件小应用时已经渐渐离不开AI的协助了,往常可能要花很长时间写代码、搜索找资料、学习相关的API文档、调试代码(就不提那些因为遇到瓶颈而停下夭折的项目了)现在通过提示词,告诉AI我的需求,再一步步和AI商量着改进它给出的方案,提出修改要求,就可以让代码大致成型。

对于它给出的代码,还可以进一步通过AI让它为你来进行解释,这样既可以在解决问题的同时,学习那些遇到的不会的知识点,大大提高了学习效率。

这次,我让AI帮我生成一个可以将文本按照段落分割的代码,就学到了一个以前没用过的splitlines()函数。经过两轮的提示词,它就给我了比较满意的回复(本次尝试的相关视频,我已经在视频号「退役程序员」中发布)
def parse_text_to_paragraphs(file_name):
    with open(file_name, 'r') as f:
        text = f.read()

    # Split the text into lines
    lines = text.splitlines()

    # Initialize an empty list to store the paragraphs
    paragraphs = []

    # Initialize an empty string to build the current paragraph
    current_paragraph = ''

    # Iterate over each line
    for line in lines:
        # If the line is not empty, add it to the current paragraph
        if line.strip():
            current_paragraph += line + ' '

        # If the line is empty or a new chapter starts,
        # add the current paragraph to the list and reset the current paragraph
        elif current_paragraph.strip():
            paragraphs.append(current_paragraph.strip())
            current_paragraph = ''

    # Add any remaining paragraph to the list
    if current_paragraph.strip():
        paragraphs.append(current_paragraph.strip())

    return paragraphs

paragraphs = parse_text_to_paragraphs('book.txt')

print(f"{len(paragraphs)}")

这次我来生成这段代码是在VS Code中通过Continue扩展调用的本地大模型llama3.1。AI帮我们来生成代码时经常会帮我们生成实现特定功能的函数,这样很方便我们之后直接调用。

现在,让AI帮我们逐行分析这段 Python 代码,这里我还是用的llama3.1:

1. def parse_text_to_paragraphs(file_name):
    这行代码定义了一个函数 parse_text_to_paragraphs,它接受一个参数 file_name。函数的目的似乎是将文本文件分割成段落(paragraphs)。

2. with open(file_name, 'r') as f:
    这行代码打开一个名为 file_name 的文本文件,读取模式为只读 ('r')。with 语句保证了文件在使用完毕后会被自动关闭。

3. text = f.read()
    这行代码读取整个文本文件的内容,并将其存储在变量 text 中。

4. lines = text.splitlines()
    这行代码将 text 的内容分割成一行一行的文本,存储在列表 lines 中。splitlines() 方法会根据换行符 (\n) 将文本分割成不同的行。

5. paragraphs = [] 和 current_paragraph = ''
    这两行代码分别初始化一个空列表 paragraphs 和一个空字符串 current_paragraph。paragraphs 将用于存储最终的段落,而 current_paragraph 将用于临时存储当前正在处理的段落。

6. for line in lines:
    这行代码开始了对 lines 列表的迭代循环。每次迭代,会取出一个文本行,并将其赋值给变量 line。

7. if line.strip():
    这行代码检查当前行是否有内容(即非空)。如果行有内容,则执行下面的语句。

8. current_paragraph += line + ' '
    这行代码将当前行追加到临时段落 current_paragraph 中。strip() 方法用于去除行两端的空白符,避免多余的空格。

9. elif current_paragraph.strip():
    这行代码检查临时段落是否有内容(即非空)。如果临时段落有内容,则执行下面的语句。

10. paragraphs.append(current_paragraph.strip()) 和 current_paragraph = ''
    这两行代码将临时段落追加到最终列表 paragraphs 中,并重置临时段落。strip() 方法用于去除段落两端的空白符,避免多余的空格。

11. if current_paragraph.strip():
    这行代码检查临时段落是否有内容(即非空)。如果临时段落有内容,则执行下面的语句。

12. paragraphs.append(current_paragraph.strip())
    这行代码将临时段落追加到最终列表 paragraphs 中。strip() 方法用于去除段落两端的空白符,避免多余的空格。

13. return paragraphs
    这行代码返回最终列表 paragraphs。

14. paragraphs = parse_text_to_paragraphs('book.txt')
    这行代码调用函数 parse_text_to_paragraphs,并将其结果赋值给变量 paragraphs。book.txt 是一个文本文件的名称。

15. print(f"{len(paragraphs)}")
    这行代码打印最终列表 paragraphs 的长度。

另外,还可以让LLM列出当中提到的关键知识点:
    函数定义def parse_text_to_paragraphs(file_name):文件读取with open(file_name, 'r') as f:文本分割lines = text.splitlines()段落初始化paragraphs = [] 和 current_paragraph = ''循环迭代for line in lines:条件判断if line.strip(): 和 elif current_paragraph.strip():列表追加paragraphs.append(current_paragraph.strip())临时段落重置current_paragraph = ''最终结果返回return paragraphs

对于刚刚学习编程的小伙伴们,在学习那些枯燥的基本语法同时,能够快速提高的方法之一就是阅读别人写的代码,而AI不但提供了可阅读的代码,还可以毫无保留、不厌其烦、事无巨细的帮你解释当中的知识点。虽然AI存在幻觉问题,但个人感觉对于编程领域,这样的问题影响偏小,更何况用程序来验证它所提供的信息是否准确可比在其他领域来验证它回复的真伪要容易的多。



扫码关注我的公众号「退役程序员的茶室」
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-10-10 10:17 , Processed in 0.108424 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表