python字符串处理


str='165负,183负,183负,147负,147负,129负,165负,165负,1110负,147负,1011负,912负,129负,912负,1011负,615负,129负,714负,714负,417负'

如何只保留胜场数啊str='16,18,18...'这样

可以使用正则表达式,并利用re.findall()函数来匹配字符串中所有满足要求的子串,代码如下:

import re

str = '16胜5负,18胜3负,18胜3负,14胜7负,14胜7负,12胜9负,16胜5负,16胜5负,11胜10负,14胜7负,10胜11负,9胜12负,12胜9负,9胜12负,10胜11负,6胜15负,12胜9负,7胜14负,7胜14负,4胜17负'

matches = re.findall(r'(\d+)胜', str)
print(matches)
其中,(\d+)胜为正则表达式,\d+表示匹配1个或多个数字,()用来表示提取满足要求的子串。结果输出如下:

['16', '18', '18', '14', '14', '12', '16', '16', '11', '14', '10', '9', '12', '9', '10', '6', '12', '7', '7', '4']
输出结果即为所有满足匹配表达式条件的子串。

import re

str = '165负,183负,183负,147负,147负,129负,165负,165负,1110负,147负,1011负,912负,129负,912负,1011负,615负,129负,714负,714负,417负'

# 使用正则表达式提取胜场数
win_list = re.findall(r'(\d+)胜', str)

# 将胜场数列表转换为字符串
win_str = ','.join(win_list)

print(win_str)