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

发布于 2021-01-29 15:00:27

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

71 1 * abwhf

8 askg

*14 snbsb

00ab

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

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

71 1 *abwhf

8askg

*14snbsb

00ab

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

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

这里有两个相关的帖子:

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

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

关注者
0
被浏览
90
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用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搜索字符串以查找匹配表达式的第一个匹配项的索引。您可以根据匹配的位置对原始字符串进行切片,以获得两个列表。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看