【问题标题】:how to make a new line before a digit in a string [closed]如何在字符串中的数字前换行[关闭]
【发布时间】:2018-10-12 17:42:44
【问题描述】:

我想在数字之前剪掉字符串,这样它就会形成一个新的字符串。我会确保除了步骤之外没有其他数字(例如用于测量的数字)。

示例:

a = 'HOW TO COOK RICE - Chapter 1: 1 rinse water once 2 add one and a half cup of water for every cup of rice 3 cover the pot and simmer'

结果应该是除章节数字之外的每个数字之前的新行

HOW TO COOK RICE - Chapter 1
1 rinse water once
2 add one and a half cup of water for every cup of rice
3 cover the pot and simmer

【问题讨论】:

  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topichow to ask... the perfect question 在此处申请。 StackOverflow 不是设计、编码、研究或教程资源。但是,如果您遵循您在网上找到的任何资源,进行诚实的编码尝试并遇到问题,那么您将有一个很好的示例可以发布。
  • 此问题缺少上下文或其他详细信息:请通过提供其他上下文来改进问题,最好包括您对问题的想法以及您为解决问题所做的任何尝试。这些信息可以帮助其他人识别您遇到的困难,并帮助他们写出适合您经验水平的答案。您还需要准确说明问题是什么、您的预期、您得到了什么以及任何回溯。
  • 您还需要确保您的问题是明确的。在这种情况下,是否应该在返回的字符串中简单地忽略前缀“HOW TO COOK RICE - Chapter 1:”?检测章节标题结尾的代码究竟是怎样的——它是否总是“章节”后跟数字后跟“:”?
  • 如果指令本身包含一个数字会怎样?比如说2 add 1 1/2 cups of water for every cup of rice
  • 这只是一个例子。我会确保除了字符串中的步骤之外没有其他数字

标签: python string list


【解决方案1】:

使用正则表达式

a = 'HOW TO COOK RICE - Chapter 1: 1 rinse water once 2 add one and a half cup of water for every cup of rice 3 cover the pot and simmer'
idx=[i.start() for i in re.finditer('(\d{1,} \w{1,})', a)]
if idx:
    print(a[:idx[0]])
else:
    print(a)
for i,index in enumerate(idx):
    if not i==len(idx)-1:
        print(a[index:idx[i+1]])
    else:
        print(a[idx[i]:])

输出

HOW TO COOK RICE - Chapter 1: 
1 rinse water once 
2 add one and a half cup of water for every cup of rice 
3 cover the pot and simmer

【讨论】:

  • 谢谢!这就是我要找的。但是,它不会打印最后一位数字(3 盖上锅盖炖)。对不起,我忘了把它放在预期的结果上。
  • @sunnyvalecalifornia 不用担心编辑了代码。确保说明中没有任何数字
  • 酷。谢谢!还有一件事,我如何打印“如何煮米饭 - 第 1 章”?
  • @sunnyvalecalifornia 完成
  • 谢谢!我接受了解决方案。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 2018-05-02
  • 2018-09-04
  • 2014-03-06
  • 1970-01-01
  • 2015-08-17
相关资源
最近更新 更多