一尘不染

如何在Python中首次出现字母时拆分字符串?

python

A具有以下格式的一系列字符串。演示示例如下所示:

71 1 * abwhf

8 askg

*14 snbsb

00ab

我正在尝试编写一个Python 3程序,该程序将使用 for 循环遍历每个字符串,并在首次出现字母时将其拆分为一个包含两个元素的列表。

上面的字符串的输出将成为具有以下元素的列表:

71 1 *abwhf

8askg

*14snbsb

00ab

还有就是 应该 是在编辑器中的前三个例子中第一个字符串后面输入一个空格,但是这只能说明

如何以这种方式分割字符串?

这里有两个相关的帖子:

第一个问题的第一个答案使我可以在第一次出现单个字符而不是多个字符(像字母表中的所有字母)时将字符串拆分。

第二个字母允许我在第一个字母处拆分,而不仅仅是一次。使用此方法将导致包含许多元素的数组。


阅读 364

收藏
2021-01-20

共1个答案

一尘不染

使用re.search

import re

strs = ["71 1 * abwhf", "8 askg", "*14 snbsb", "00ab"]


def split_on_letter(s):
    match = re.compile("[^\W\d]").search(s)
    return [s[:match.start()], s[match.start():]]


for s in strs:
    print split_on_letter(s)

正则表达式[^\W\d]匹配所有字母字符。

\W匹配所有非字母数字字符并\d匹配所有数字字符。^在集合的开头,反转选择以匹配所有不匹配(非字母数字或数字)的所有内容(与所有字母相对应)。

match搜索字符串以查找匹配表达式的第一个匹配项的索引。您可以根据匹配的位置对原始字符串进行切片,以获得两个列表。

2021-01-20