最近在迁移印象笔记到语雀,发现自己还收藏过一篇文章:“中国最美的100首古情诗”,哈哈,都不知道自己这么感情呢,在迁移的时候发现,这100首诗,居然是写在一行上,用数字标记每首诗,阅读起来十分不便,换之前自己可能就手工换行了,不,我要“懒起来”,于是想用Python来解决这个问题,如下就是我的解决过程,虽然绕了点弯,不过最终结果是好的,完美达到预期效果。

这首诗粘贴过来就是这样:

中国最美的100句古代爱情诗1衣带渐宽终不悔,为伊消得人憔悴。-柳永《凤栖梧》2死生契阔,与子成说。执子之手,与子偕老。-佚名《诗经邶风击鼓》3两情若是久长时,又岂在朝朝暮暮。-秦观《鹊桥仙》4相思相见知何日?此时此夜难为情。-李白《三五七言》5有美人兮,见之不忘,一日不见兮,思之如狂。-佚名《凤求凰琴歌》6这次我离开你,是风,是雨,是夜晚;你笑了笑,我摆一摆手,一条寂寞的路便展向两头了。-郑愁予《赋别》( 文章阅读网:www.sanwen.net )7入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极。-李白《三五七言》8曾经沧海难为水,除却巫山不是云。-元稹《离思五首其四》9君若扬路尘,妾若浊水泥,浮沈各异势,会合何时谐?-曹植《明月上高楼》10凄凉别後两应同,最是不胜清怨月明中。-纳兰性德《虞美人》11还君明珠双泪垂,恨不相逢未嫁时。-张籍《节妇吟》12如何让你遇见我,在我最美丽的时刻。为这,我已在佛前求了五百年,求他让我们结一段尘缘。-席慕蓉《一棵开花的树》13嗟余只影系人间,如何同生不同死?-陈衡恪《题春绮遗像》14相思树底说相思,思郎恨郎郎不知。-梁启超《台湾竹枝词》15自君之出矣,明镜暗不治。思君如流水,何有穷已时。-徐干《室思》16相见争如不见,有情何似无情。-司马光《西江月》17落红不是无情物,化作春泥更护花。-龚自珍《己亥杂诗》18天不老,情难绝。心似双丝网,中有千千结。-张先《千秋岁》19似此星辰非昨夜,为谁风露立中宵。-黄景仁《绮怀诗二首其一》20直道相思了无益,未妨惆怅是清狂。-李商隐《无题六首其三》21深知身在情长在,怅望江头江水声。-李商隐《暮秋独游曲江》22人到情多情转薄,而今真个不多情。-纳兰性德《摊破浣溪沙》23此情可待成追忆,只是当时已惘然。-李商隐《锦瑟》24相思**多少,地角天涯未是长。-张仲素《燕子楼》25问世间,情是何物,直教生死相许。-元好问《摸鱼儿二首其一》26身无彩凤双飞翼,心有灵犀一点通。-李商隐《无题》27兽炉沈水烟,翠沼残花片,一行行写入相思传。-张可久《塞鸿秋》28平生不会相思,才会相思,便害相思。-徐再思《折桂令》29一寸相思千万绪,人间没箇安排处。-李冠《蝶恋花》30十年生死两茫茫,不思量,自难忘,千里孤坟,无处话凄凉。-苏轼《江城子》31今夕何夕,见此良人。-佚名《诗经唐风绸缪》32天长地久有时尽,此恨绵绵无绝期。-白居易《长恨歌》33在天愿作比翼鸟,在地愿为连理枝。-白居易《长恨歌》34重叠泪痕缄锦字,人生只有情难死。-文廷式《蝶恋花》35一个是阆苑仙葩,一个是美玉无瑕。若说没奇缘,今生偏又遇著他;若说有奇缘,如何心事终虚话?-曹雪芹《枉凝眉》36春蚕到死丝方尽,蜡炬成灰泪始乾。-李商隐《无题》37他生莫作有情痴,人间无地著相思。-况周颐《减字浣溪沙》38尊前拟把归期说,未语春容先惨咽。-欧阳修《玉楼春》39关关雎鸠,在河之洲。窈宨淑女,君子好逑。-佚名《诗经周南关雎》40人生自是有情痴,此恨不关风与月。-欧阳修《玉楼春》41此去经年,应是良辰好景虚设。便纵有,千种风情,更与何人说。-柳永《雨霖铃》42只愿君心似我心,定不负相思意。-李之仪《卜算子》43落花人独立,微雨燕双飞。-晏几道《临江仙二首其二》44可怜无定河边骨,犹是春闺梦裏人。-陈陶《陇西行》45千金纵买相如赋,脉脉此情谁诉。-辛弃疾《摸鱼儿》46梧桐树,三更雨,不道离情正苦。一叶叶,一声声,空阶滴到明。-温庭筠《更漏子三首其三》47结发为夫妻,恩爱两不疑。-苏武《结发为夫妻》48寻好梦,梦难成。况谁知我此时情。枕前泪共帘前雨,隔箇窗儿滴到明。-聂胜琼《鹧鸪天》49一场寂寞凭谁诉。算前言,总轻负。-柳永《昼夜乐》50天长路远魂飞苦,梦魂不到关山难,长相思,摧心肝。-《李白长相思二首其一》51不要因为也许会改变,就不肯说那句美丽的誓言,不要因为也许会分离,就不敢求一次倾心的相遇。-席慕蓉《印记》52愿我如星君如月,夜夜流光相皎洁。-范成大《车遥遥篇》53鱼沈雁杳天涯路,始信人间别离苦。-戴叔伦《相思曲》54执手相看泪眼,竟无语凝噎。-柳永《雨霖铃》55诚知此恨人人有,贫夫妻百事哀。-元稹《遣悲怀三首其二》56换我心,为你心,始知相忆深。-顾敻《诉衷情》57忆君心似西江水,日夜东流无歇时。-鱼玄机《江陵愁望有寄》58春心莫共花争发,一寸相思一寸灰。-李商隐《无题六首其六》59相思似海深,旧事如天远。-乐婉《卜算子》60相恨不如潮有信,相思始觉海非深。-白居易《浪淘沙》61玲珑骰影埠於梗牍窍嗨贾恢浚峦ン蕖堆盍Α?62忍把千金酬一笑?毕竟相思,不似相逢好。-邵瑞彭《蝶恋花》63天涯地角有穷时,只有相思无尽处。-晏殊《玉楼春》64都道是金玉良缘,俺只念木石前盟。空对著,山中高士晶莹雪;终不忘,世外仙姝寂寞林。-曹雪芹《终身误》65人如风後入江云,情似雨馀黏地絮。-周邦彦《玉楼春》66滴不尽相思血泪抛红豆,开不完春柳春花满画楼。-曹雪芹《红豆词》67泪眼问花花不语,乱红飞过秋千去。-欧阳修《蝶恋花二首其一》68瘦影自怜秋水照,卿须怜我我怜卿。-冯小青《怨》69锺情怕到相思路。盼长堤,草尽红心。动愁吟,碧落黄泉,两处难寻。-朱彝尊《高阳台》70若问闲情都几许?一川烟草,满城风絮,梅子黄时雨。-贺铸《横塘路》71多情只有春庭月,犹为离人照落花。-张泌《寄人》72花红易衰似郎意,水流无限似侬愁。-刘禹锡《竹枝词四首其二》73若有知音见采,不辞遍唱阳春。-晏殊《山亭柳赠歌者》74明月楼高休独倚,酒入愁肠,化作相思泪。-范仲淹《苏幕遮》75思君如明烛,煎心且衔泪。-陈叔达《自君之出矣》76生当复来归,死当长相思。-苏武《结发为夫妻》77休言半纸无多重,万斛离愁尽耐担。-陈蓬姐《寄外二首其二》78妾似胥山长在眼,郎如石佛本无心。-朱彝尊《鸳鸯湖棹歌》79不知魂已断,空有梦相随。除却天边月,没人知。-韦庄《女冠子二首其一》80同心而离居,忧伤以终老。-佚名《涉江采芙蓉》81夜月一帘幽梦,春风十里柔情。-秦观《八六子》82从别後,忆相逢,几回魂梦与君同。-晏几道《鹧鸪天三首其一》83多情自古伤离别。更那堪,冷落清秋节。-柳永《雨霖铃》84无情不似多情苦,一寸还成千万缕。-晏殊《玉楼春》85唯将终夜长开眼,报答平生未展眉。-元稹《遣悲怀三首其三》86别来半岁音书绝,一寸离肠千万结。-韦庄《应天长》87相思一夜梅花发,忽到窗前疑是君。-卢仝《有所思》88直缘感君恩爱一回顾,使我双泪长珊珊。-卢仝《楼上女儿曲》89相思本是无凭语,莫向花牋费泪行。-晏几道《鹧鸪天三首其二》90离愁渐远渐无穷,迢迢不断如春水。-欧阳修《踏莎行》91若教眼底无离恨,不信人间有白头。-辛弃疾《鹧鸪天》92开辟鸿蒙,谁为情种?都只为风月情浓。-曹雪芹《红楼梦引子》93明月不谙离恨苦,斜光到晓穿朱户。-晏殊《鹊踏枝》94临别殷勤重寄词,词中有誓两心知。-白居易《长恨歌》95泪纵能乾终有迹,语多难寄反无词。-陈端生《寄外》96还卿一钵无情泪,恨不相逢未剃时。-苏曼殊《本事诗》97终日两相思,为君憔悴尽,百花时。-温庭筠《南歌子四首其二》98欲寄彩笺兼尺素,山长水阔知何处。-晏殊《鹊踏枝》99离恨却如春草,更行更远还生。-李煜《清平乐》100鸿雁在云鱼在水,惆怅此情难寄。-晏殊《清平乐二首其二》

因为每首诗前面都有数字标签,思路就是:

把数字标签用正则匹配出来,再统一替换成换行符"\n"

下面就是按这个思路来一步一步实现:

先是用正则匹配出数字,需要用到re库,代码如下:

import retest = "上面那一大段字符串,此处为了节省篇幅,就不写了"pattern = re.compile(r'\d+')match = pattern.findall(test)print match

执行结果如下,确实可以筛选出所有的数字编号:
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘10’, ‘11’, ‘12’, ‘13’, ‘14’, ‘15’, ‘16’, ‘17’, ‘18’, ‘19’, ‘20’, ‘21’, ‘22’, ‘23’, ‘24’, ‘25’, ‘26’, ‘27’, ‘28’, ‘29’, ‘30’, ‘31’, ‘32’, ‘33’, ‘34’, ‘35’, ‘36’, ‘37’, ‘38’, ‘39’, ‘40’, ‘41’, ‘42’, ‘43’, ‘44’, ‘45’, ‘46’, ‘47’, ‘48’, ‘49’, ‘50’, ‘51’, ‘52’, ‘53’, ‘54’, ‘55’, ‘56’, ‘57’, ‘58’, ‘59’, ‘60’, ‘61’, ‘62’, ‘63’, ‘64’, ‘65’, ‘66’, ‘67’, ‘68’, ‘69’, ‘70’, ‘71’, ‘72’, ‘73’, ‘74’, ‘75’, ‘76’, ‘77’, ‘78’, ‘79’, ‘80’, ‘81’, ‘82’, ‘83’, ‘84’, ‘85’, ‘86’, ‘87’, ‘88’, ‘89’, ‘90’, ‘91’, ‘92’, ‘93’, ‘94’, ‘95’, ‘96’, ‘97’, ‘98’, ‘99’, ‘100’]

但是如何替换呢,这些数字都在一个列表里,难道要循环么:

for i in match:print test.replace(i, '\n')

但是这样执行出来的结果却并不是自己希望的,仔细思考了一下,替换第一个数字1后,后面都是第二行的内容,替换第二行的内容,前面内容又都变成一行了,就导致根本不符合预期结果,替换操作应该是同步进行的,而不是for循环这种模式。

自己又查阅了一些资料,发现自己的思路和最终实现方法,完全跑偏,实际上一句话就可以搞定:

import retest = "上面那一大段内容"print re.sub(r'\d+', '\n', test)

就这么简单,太汗颜了,自己居然绕了这么大一个弯。

这里就要说下replace和sub的区别了,首先是语法上:

str.replace(old, new[, max])

old – 将被替换的子字符串
new – 新字符串,用于替换old子字符串
max – 可选字符串, 替换不超过 max 次,如果不指定则替换所有

re.sub(pattern, repl, string, count=0, flags=0)

pattern:表示正则表达式中的模式字符串
repl:被替换的字符串(既可以是字符串,也可以是函数)
string:要被处理的,要被替换的字符串
count:匹配的次数, 默认是全部替换

可以这么说,replace是通过对字符串替换指定内容,sub是通过正则替换指定内容;

其次是调用上,replace是通过字符串来调用,而sub是通过re库来调用的;

功能上sub更加强大。

用Python解决实际问题:给100首情诗增加换行相关推荐

  1. 采用python解决实际问题_应用 Python 解决一些实际问题

    应用 Python 解决一些实际问题 韦建明 2004 年 1 月 10 日发布 关于Python Python 是一种简洁优美的编程语言,它具有面向对象的特征,较好的粘合其他语言的能力及跨平台性.然 ...

  2. 采用python解决实际问题_Python编程语言解决几种常见的实际问题

    Python编程语言解决几种常见的实际问题 (2012-10-25 17:24:12) 标签: it python python培训 北京 杂谈 Python编程语言解决一些实际问题 from os. ...

  3. python解决实际问题的代码_Python代码规范问题及解决

    为了养成使用Python编程好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8 只是检测风格错误,而非编码错误! P ...

  4. 用python解决实际问题_Python解决实际问题一--备份文件

    问题: 实现一个可以为所有重要文件创建备份的程序 分析: 拆解问题,1.何为重要文件,假定它们都放到指定的一个或几个文件夹中. 2.备份都存放到一个备份主目录中. 3.备份压缩成zip格式 4.备份文 ...

  5. python解决实际问题的过程_Python开发过程问题集锦(Continuous updating)

    def _normalize_shape(ndarray, shape, cast_to_int=True):"""Private function which does ...

  6. Python解决文本分析问题,以酒店评价数据分析为例

    如何运用Python解决实际问题上,读文件然后能进行相应分析是很重要. 在这次事例中,用使用jieba库中的lcut函数对数据进行分词, import jieba def total():     p ...

  7. python计算学生平均年龄_CodeSalt | Python解决按学生年龄排序的实际问题

    Python解决按学生年龄排序的实际问题 问题:定义一个Class:包含姓名name.性别gender.年龄age,需要按年龄给学生排序. 输入:包含学生对象的List. 输出:按照年龄age进行排序 ...

  8. python中倒背如流_倒背如流100首诗词,你眼中的学霸是怎么做到的?

    逆流而上100首诗 ▼记忆经典课程! ▼将掀起全民记忆风暴! 学习记忆的技巧, 以一百首诗开始! 随着记忆力的传播,我们越来越深刻地认识到,记忆力不仅是一种方法,更是一种能力!光学习方法是不够的,还要 ...

  9. python解决现实问题的思想_高级语言程序设计(Python)

    spContent="高级语言程序设计(Python)"课程面向无编程基础的学生,培养运用Python语言解决实际问题的编程能力.使学生掌握Python语言的基本语法.语句以及结构 ...

  10. python 定义变量_用python解决动态的定义变量名(并给其赋值方法:大数据处理)...

    前言: 今天为大家带来的内容是:用python解决动态的定义变量名(并给其赋值方法:大数据处理)具有很好的参考价值,希望对大家有所帮助.喜欢本文内容的记得点赞转发收藏不迷路哦!!! 最近消费kafka ...

最新文章

  1. 5月15日的硬分叉将会给BCH带来什么?
  2. Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
  3. An internal error occurred during: Launching MVC on Tomcat 6.x.
  4. php 根据输入值读取MySQL_MySQL输入PHP给出的另一个值
  5. 加载一张照片,可选择是否另存为
  6. 六、Analysis of quicksort
  7. EDAS投稿出现问题: notembedded: Upload failed: The font Helvetica is not embedded in the file
  8. 不同笔记本电脑BIOS的进入方法:
  9. 那些年,我爬过的北科(十)——搜索案例之ElasticSearch的使用
  10. Symbian中的iScanCode和iCode
  11. 生成条码 -- jsbarcode
  12. 基于JAVA飞羽羽毛球馆管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  13. 什么是设计模式,为什么要使用?
  14. react二级路由配置正确不显示页面的问题解决
  15. 什么是gpo,gpt,gpc(活动目录组策略)
  16. 显卡mx150和230哪个好_MX250和MX150哪个好
  17. 【牛客 错题集】Linux系统方面错题合集
  18. 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010
  19. 计算机过去现在和未来图片,数据驱动的图形学:过去、现在和未来
  20. Ruby 教程,数组学习,数组基本操作

热门文章

  1. orcad的瞬态分析
  2. 项目jar包启动的命令
  3. 误删文件恢复免费软件推荐
  4. 奇艺CEO龚宇:超过所有搜狐人做的视频网站
  5. CentOS 编译安装 Nebula Graph 3.10
  6. leetcode 没有php,Leetcode PHP题解--D99 860. Lemonade Change
  7. 乐优商城(四十八)评论微服务(一)
  8. 使用 Burp Suite 暴力破解密码 撞库攻击 从0到1手摸手教学
  9. 【C++】-- STL容器适配器之priority_queue
  10. 计算机组装拆卸 心得,学习组装电脑的心得体会怎么写?