A 具有以下格式的一系列字符串。演示示例如下所示:
71 1 * abwhf
8 问
*14 snbsb
00ab
我正在尝试编写一个 Python 3 程序,该程序将使用 for 循环循环遍历每个字符串,并在第一次出现一个字母时将其拆分为包含两个元素的列表。
上述字符串的输出将变成包含以下元素的列表:
71 1 *
和 abwhf
8
和askg
*14
和 snbsb
00
和 ab
前三个示例的第一个字符串后应该有一个空格,但这只显示在编辑器中
如何以这种方式拆分字符串?
这里有两个帖子看起来相关:
第一个问题的第一个答案允许我在第一次出现单个字符而不是多个字符(如字母表中的所有字母)时拆分字符串。
第二个允许我在第一个字母处拆分,但不仅仅是一次。使用它会产生一个包含许多元素的数组。
最佳答案
使用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/