首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用拆分方法或Regex分隔字符串

使用拆分方法或Regex分隔字符串
EN

Stack Overflow用户
提问于 2022-09-15 01:25:37
回答 2查看 31关注 0票数 2

在我的项目中,我正在网废UFC网站,以收集每个UFC运动员的总胜利、总损失和总平局。

这是我的代码的一部分,因为我希望分别去除总赢家、总损失和总平局:

代码语言:javascript
复制
import re
record = "10-7-3 (W-L-D)" #W = wins, L= Loss, D= Draws
char = "-"
record+="-"
totalwins = ""
totalloss = ""
totaldraws = ""


correctRecord = re.findall('\[[^\]]*\]|\([^\)]*\)|\"[^\"]*\"|\S+',record)[0]

print("The correct record per fighter is:", correctRecord)

totaldash = 0
for i in range(len(correctRecord)):
    if(record[i] == char):
    
        totaldash+=1
   
   
        if totaldash == 1:
            print("The total wins", totalwins)
            totalwins =""
        elif totaldash ==2:
       
            print("The total losses ", totalwins)
       
            totalwins=""
       
        elif totaldash ==3:
       
            print("The total draws ", totalwins)
   
   
    elif (correctRecord[i] !=char):
        totalwins +=correctRecord[i]

结果如下:

代码语言:javascript
复制
   The correct record per fighter is: 10-7-3
   The total wins 10
   The total losses  7

问题是,我无法说出全部的平局。我还尝试使用条带方法,但没有结果:

代码语言:javascript
复制
correctRecord= str(record.split(separator, 1)[0])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-15 01:38:28

尝试:

代码语言:javascript
复制
import re

record = "10-7-3 (W-L-D)"

wins, loss, draw = map(int, re.findall(r"\d+", record))

print(f"{wins=} {loss=} {draw=}")

指纹:

代码语言:javascript
复制
wins=10 loss=7 draw=3
票数 1
EN

Stack Overflow用户

发布于 2022-09-15 02:21:15

在数据以不同的顺序工作的情况下,会有一些更复杂的事情发生:

代码语言:javascript
复制
import re

record = "10-3-7 (W-D-L)"
values = re.findall(r'\d+|[WDL]', record)
vdict = dict(zip(values[3:], values[:3]))
print(f'wins={vdict["W"]}, losses={vdict["L"]}, draws={vdict["D"]}')

输出:

代码语言:javascript
复制
wins=10, losses=7, draws=3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73724666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档