【问题标题】:Wildcard in python stringpython字符串中的通配符
【发布时间】:2017-11-02 03:19:19
【问题描述】:

我需要使用.split()[] 来拆分字符串。我遇到的问题是需要拆分的部分也需要有一个通配符。假设字符串是Mr. Robot S03E04 eps3.3_m3tadata.par2,我想使用item.split("S??E??", 1)[0]能够将字符串转换为Mr. Robot S03E04,然后将其放回数组中。

这是我尝试使用的代码:

import feedparser

URL = "http://followshows.com/feed/ZQU98gqv"

feed = feedparser.parse(URL)

for index in range(len(feed.entries)):
    item = feed.entries[index].title
    print item.split("S??E??", 1)[0]

谢谢

【问题讨论】:

  • 你需要查看正则表达式
  • 使用以下正则表达式,以防您的 S 和 E 后跟 2 位数字 S[0-9][0-9]E[0-9][0-9] 更多信息,请参考官方文档:docs.python.org/2/library/re.html

标签: python arrays string split wildcard


【解决方案1】:

正则表达式在这里很有用。

import re;  
re.split('e.t', 'This is a testing string');  
['This is a t', 'ing string']

正则表达式中的点字符是单个字符的通配符。

按照您在问题中提出的要求:

re.split('S..E..', item)[0];

请注意,这并不能验证子字符串是否确实存在于字符串中。为此,请使用 re.search。

【讨论】:

  • 谢谢。我尝试阅读文档,但它让我很困惑。无论如何要在子字符串之后进行拆分?
  • 要在第一次出现子字符串之后(但在第二次之前)获取字符串的一部分,将使用 [1] 而不是 [0]。 re.split 返回一个列表;你可以选择索引。
  • 我明白你在说什么,但我希望保留S..E..,但之后什么都没有
  • 更正 - 之后将是 [:2]。
  • 非常感谢您的帮助。我已经设法让它与这个trans1 = re.split('(S..E..)', item)[0]; trans2 = trans1.join(re.split('(S..E..)', item)[1:2]); trans3 = trans1 + trans2; print(trans3) 一起工作
猜你喜欢
  • 2015-02-28
  • 2020-11-21
  • 2013-12-31
  • 1970-01-01
  • 2020-05-26
  • 2014-06-14
  • 1970-01-01
  • 2021-08-25
相关资源
最近更新 更多