python - 如何在 Python 中第一次出现字母时拆分字符串?

标签 python arrays regex string split

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

71 1 * abwhf

8 问

*14 snbsb

00ab

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

上述字符串的输出将变成包含以下元素的列表:

71 1 *abwhf

8askg

*14snbsb

00ab

前三个示例的第一个字符串后应该有一个空格,但这只显示在编辑器中

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

这里有两个帖子看起来相关:

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

第二个允许我在第一个字母处拆分,但不仅仅是一次。使用它会产生一个包含许多元素的数组。

最佳答案

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

关于python - 如何在 Python 中第一次出现字母时拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35609922/

相关文章:

python - 有没有更好的方法通过将 'object' 替换为 mean 来将 'na' 类型数组转换为 numpy 数组?

java - 了解正则表达式

c# - 如何创建带有滚动的复选框列表?

arrays - couchdb 搜索或过滤键数组

Java byte 将值错误字符串插入到字节

c# - 从字符串的开头和结尾删除 BR 标记

java - 一个字符串上有数百个正则表达式

python - 问题 cursor.description 从不返回列名称中的方括号(python 2.7 + sqlite3)别名

python - 动态生成 Pandas View

Python函数调用顺序