鱼C论坛

 找回密码
 立即注册
查看: 1509|回复: 11

[已解决]简单的python数据处理,第一个解决的人发5元红包

[复制链接]
发表于 2021-12-1 20:23:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
图片中这种情况,想把每首唐诗的题目和内容变成一行,该怎么处理,谢谢
最佳答案
2021-12-1 21:07:51
with open('data.txt', encoding='utf-8') as f:
    txt = f.read().split('\n')

result = []
t = ''  # 一首诗的临时存储
f = 0  # 本诗是否已经开始存储
for line in txt:
    if line:  # 如果本行有字符串
        if ',' in line:  # 如果本行有逗号,就是诗句
            f = 1
            t += line
        else:  # 如果本行是诗的标题
            t += line + ': '
    else:  # 如果行没有内容
        if f:  # 如果本诗已存储完毕,存储到result列表中
            result.append(t)
            t = ''
            f = 0
# print(result)
with open('result.txt', 'w', encoding='utf-8') as f:
    for line in result:
        f.write(line + '\n')
QQ截图20211201201809.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-1 20:41:48 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 jackz007 于 2021-12-1 20:44 编辑

      变成一行?具体什么样子,举个例子嘛。难道是把一首诗的题目和内容全部写在同一行上?如果是,那么,题目和内容如何衔接?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-1 21:07:51 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

with open('data.txt', encoding='utf-8') as f:
    txt = f.read().split('\n')

result = []
t = ''  # 一首诗的临时存储
f = 0  # 本诗是否已经开始存储
for line in txt:
    if line:  # 如果本行有字符串
        if ',' in line:  # 如果本行有逗号,就是诗句
            f = 1
            t += line
        else:  # 如果本行是诗的标题
            t += line + ': '
    else:  # 如果行没有内容
        if f:  # 如果本诗已存储完毕,存储到result列表中
            result.append(t)
            t = ''
            f = 0
# print(result)
with open('result.txt', 'w', encoding='utf-8') as f:
    for line in result:
        f.write(line + '\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-12-2 00:15:54 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 阿奇_o 于 2021-12-2 00:19 编辑

如果每首诗歌之间都有空白行,那么还是比较简单的(6,7行代码而已),代码如下:
res = []
with open('TangShi.txt', 'r', encoding='utf-8') as f:
    # print(f.readlines())
    # print(''.join(f.readlines()).split('\n\n')
    temp = ''.join(f).split('\n\n')  # 以空白行作为分隔,得到 诗歌的标题和内容 的一个列表
    for i in range(0, len(temp), 2):  # 每隔一项为一首诗
        # print(temp[i:i+2])
        # res.append(''.join(temp[i:i+2]).replace('\n', ''))  # 这标题和内容连在一起了,不太好。
        res.append(''.join(f'【{temp[i]}】 {temp[i+1]}').replace('\n', ''))  # 标题和内容 做一下格式化,完美~

print('\n'.join(res))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-2 08:38:37 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-2 09:20:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-2 11:43:40 | 显示全部楼层
import re

with open("raw_Tang_poetry.txt", "r", encoding="utf-8") as f:
    text = "\n\n" + f.read()
    
for title in re.findall(r"\n\n(.+)\n\n", text):
    text = text.replace(f"\n\n{title}\n\n", f"\n\n《{title}》\n\n")

text = text.replace("\n", "").replace("《", "\n《")

with open("New_raw_Tang_poetry.txt", "w", encoding="utf-8") as g:
    g.write(text[1:])

print("OK!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-2 16:18:51 | 显示全部楼层

麻烦 给个支付宝账号,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-2 16:19:30 | 显示全部楼层

麻烦给个支付宝账号,虽然不是第一个回答的,但也完美解决了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-2 16:20:06 | 显示全部楼层
阿奇_o 发表于 2021-12-2 00:15
如果每首诗歌之间都有空白行,那么还是比较简单的(6,7行代码而已),代码如下:

麻烦给个支付宝账号,虽然不是第一个回复的,但也完美解决了。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-2 16:28:29 | 显示全部楼层
Saint_HUFS 发表于 2021-12-2 16:19
麻烦给个支付宝账号,虽然不是第一个回答的,但也完美解决了,谢谢

算了,也不为那几块钱,本来就是看到了随手一做。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-2 16:40:44 | 显示全部楼层
qq1151985918 发表于 2021-12-2 16:28
算了,也不为那几块钱,本来就是看到了随手一做。

哈哈哈  真的十分感谢,昨天一下午都没搞出来。自学的,感觉真正动手起来很坎坷,感谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 17:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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