A具有以下格式的一系列字符串。演示示例如下所示:
71 1 * abwhf
8 askg
*14 snbsb
00ab
我正在尝试编写一个Python 3程序,该程序将使用 for 循环遍历每个字符串,并在首次出现字母时将其拆分为一个包含两个元素的列表。
上面的字符串的输出将成为具有以下元素的列表:
71 1 * 和 abwhf
71 1 *
abwhf
8和 askg
8
askg
*14 和 snbsb
*14
snbsb
00 和 ab
00
ab
还有就是 应该 是在编辑器中的前三个例子中第一个字符串后面输入一个空格,但是这只能说明
如何以这种方式分割字符串?
这里有两个相关的帖子:
第一个问题的第一个答案使我可以在第一次出现单个字符而不是多个字符(像字母表中的所有字母)时将字符串拆分。
第二个字母允许我在第一个字母处拆分,而不仅仅是一次。使用此方法将导致包含许多元素的数组。
使用re.search:
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]
\W匹配所有非字母数字字符并\d匹配所有数字字符。^在集合的开头,反转选择以匹配所有不匹配(非字母数字或数字)的所有内容(与所有字母相对应)。
\W
\d
^
match搜索字符串以查找匹配表达式的第一个匹配项的索引。您可以根据匹配的位置对原始字符串进行切片,以获得两个列表。
match