gpt4 book ai didi

Python正则表达式分隔字符串

转载 作者:行者123 更新时间:2023-12-01 05:00:28 25 4
gpt4 key购买 nike

[已回答第一部分,请滚动查看第二个问题编辑]

目前正在使用 Python 编写网络抓取工具。我有以下示例字符串:

哥伦布蓝衣队对阵布法罗军刀队 - 10/09/2014

我想将其拆分,以便我拥有[哥伦布蓝夹克,布法罗军刀,10/09/2014]

我阅读了正则表达式,包括本网站上的一些答案,但不知道如何格式化我的特定示例。我能想到的最好的办法就是这样,尽管它不起作用。

re.split('\w+\s\w\w\s\w+\s\.\s\w+', 团队)

我的第二次尝试是:re.split("\w+\s'at'\s\w+\s'-'\s\w+", team),但我不确定您是否可以输入确切的字符串就像正则表达式函数中的 ['at' 和 '-'] 一样。

请让我知道我的正则表达式函数哪里出了问题,或者是否有其他方法可以在 python 中分隔我的特定示例。

(另请注意,每个球队的球队名称可以是 2 或 3 个单词,例如Montreal Canadiens at Buffalo Sabres)

编辑:re.split(r"\s+at\s+|\s+-\s+", team) 似乎可以解决问题。然而我现在有第二个问题。在它自己的文件中测试它,这有效,但在我的程序中由于某种原因它不起作用。

代码:

def getTable(url):
currentMatchup = Crawl.setup(url)
teams = currentMatchup.title.string
print(teams)
re.split(r"\s+at\s+|\s+-\s+", teams)
print(teams)

输出为:

Columbus Blue Jackets at Buffalo Sabres - 10/09/2014
Columbus Blue Jackets at Buffalo Sabres - 10/09/2014

有什么想法吗?

最佳答案

您可以根据<space>at<space>分割输入字符串或<space>-<space> ,

>>> s = "Columbus Blue Jackets at Buffalo Sabres - 10/09/2014"
>>> re.split(r'\s+(?:at|-)\s+', s)
['Columbus Blue Jackets', 'Buffalo Sabres', '10/09/2014']
>>> s = 'Montreal Canadiens at Buffalo Sabres - 10/09/2014'
>>> re.split(r'\s+(?:at|-)\s+', s)
['Montreal Canadiens', 'Buffalo Sabres', '10/09/2014']

通过re.findall函数,

>>> s = "Columbus Blue Jackets at Buffalo Sabres - 10/09/2014"
>>> re.findall(r'\b[A-Z]\S+(?:\s+[A-Z]\S+){1,}|(?<=-\s)\S+', s)
['Columbus Blue Jackets', 'Buffalo Sabres', '10/09/2014']

关于Python正则表达式分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com