拆分字符串保持分隔符没有开始 space
Split string keeping the separator without a starting space
你好,我想使用 python re module:
拆分一些字符串
str1 = "-t Hello World -a New Developr -d A description"
str2 = "-t Bye -a sometext -d a large description"
我必须保留 -
,因为我目前正在编写 python CLI 项目。
我试过使用
re.split(r'(?=-)',aux)
但我收到了
['', '-t Hello World ', '-a Author ', '-d Description ']
而不是
['-t Hello World', '-a Author', '-d Description']
有什么推荐吗?
尝试对结果应用 strip() 方法。
foo = re.split(r'(?=-)',str1)
foo = [s.strip() for s in foo]
使用负后视来避免在字符串的开头拆分:(?<!^)
然后剥离每个结果字符串。
for s in str1, str2:
print([x.strip() for x in re.split(r'(?<!^)(?=\s+-)', str1)])
(我还添加了 \s+
以避免拆分像 Spider-Man
这样的单词。)
输出:
['-t Hello World', '-a New Developr', '-d A description']
['-t Hello World', '-a New Developr', '-d A description']
但是,我建议您查看可以为您执行此操作的库 - 也许 argparse 和 shlex 开始,我会质疑这些字符串的来源,因为通常您在解析之前将命令行参数作为列表处理,如下所示:
['-t', 'Hello', 'World', '-a', 'New', 'Developr', '-d', 'A', 'description']
你好,我想使用 python re module:
拆分一些字符串str1 = "-t Hello World -a New Developr -d A description"
str2 = "-t Bye -a sometext -d a large description"
我必须保留 -
,因为我目前正在编写 python CLI 项目。
我试过使用
re.split(r'(?=-)',aux)
但我收到了
['', '-t Hello World ', '-a Author ', '-d Description ']
而不是
['-t Hello World', '-a Author', '-d Description']
有什么推荐吗?
尝试对结果应用 strip() 方法。
foo = re.split(r'(?=-)',str1)
foo = [s.strip() for s in foo]
使用负后视来避免在字符串的开头拆分:(?<!^)
然后剥离每个结果字符串。
for s in str1, str2:
print([x.strip() for x in re.split(r'(?<!^)(?=\s+-)', str1)])
(我还添加了 \s+
以避免拆分像 Spider-Man
这样的单词。)
输出:
['-t Hello World', '-a New Developr', '-d A description']
['-t Hello World', '-a New Developr', '-d A description']
但是,我建议您查看可以为您执行此操作的库 - 也许 argparse 和 shlex 开始,我会质疑这些字符串的来源,因为通常您在解析之前将命令行参数作为列表处理,如下所示:
['-t', 'Hello', 'World', '-a', 'New', 'Developr', '-d', 'A', 'description']