【问题标题】:python 2.7 - how to turn a string into a list when seperators are digits and '\\n'python 2.7 - 当分隔符是数字和'\\n'时如何将字符串转换为列表
【发布时间】:2026-01-27 05:00:01
【问题描述】:

例如我有字符串:

"hello0there\\nhow3are6you1today?"

我想得到的是:

["hello", "there", "how", "are", "you", "today?"]

数字代表空格,\\n 是一个新行。 我试过 split() 来做,但它只能得到 2 个争论,而不是更多,所以它不是可选的。

我也发现了这个:

filter(None, re.split("['1234567890']+", string_to_split))

它适用于数字,但不适用于'\\n'。 有没有办法在一个动作中按数字和'\\n' 拆分字符串?

我无法找到将其拆分为两个单独函数的方法,因为一旦我创建了一个列表,我就无法再次拆分它。

如果有人知道这样做的方法,请帮助我。谢谢

【问题讨论】:

  • 只需将空格 (\s) 添加到您的正则表达式(并注意数字只是 \d)。
  • 这是原始字符串还是普通字符串?这将导致\\n\n。两者都是一个或两个\ 和一个n,而不是换行符。
  • @jonrsharpe 我不会再工作了。

标签: python string python-2.7 split newline


【解决方案1】:

您需要将\s\\n 添加到您的正则表达式中:

>>> s="hello0there\\nhow3are6you1today?"
>>> re.split(r'[\d\s\\n]*',s)
['hello', 'there', 'how', 'are', 'you', 'today?']

为了在您的字符串中使用n's 进行拆分,您可以使用正面的外观和逻辑或:

>>> re.split(r'[\d\s\\]|(?<=\\)n',s)

但由于它可能会产生一个空字符串,您可以使用列表推导来解决这个问题。

>>> [i for i in re.split(r'[\d\s\\]|(?<=\\)n',s) if i]

【讨论】:

  • 你需要更多的反斜杠(或r'')!
  • 有没有办法只将 '\n' 拆分在一起(而不是单个 'n'?因为我在包含字母 n 的单词的列表上运行它并且它也拆分了单词.. @jonrsharpe
  • @Maya 然后使用|,而不是一类字符,让它们成为替代品。
  • 你能给我穿鞋吗?一个例子.. @jonrsharpe