【问题标题】:Is there a way to extract the section before the first `/` from a list?有没有办法从列表中提取第一个`/`之前的部分?
【发布时间】:2013-01-01 06:00:02
【问题描述】:

我有一个 URL 列表:

URL = ['ose.co.jp/frame.html', 'tse.or.jp/english/individuals/index.html', 'traderupdates.nyse.com/?sa_campaign=/internal_ads/callouts/traderupdates ']

我曾想过使用 split('/'),​​但意识到它并不能真正解决问题,因为我仍然需要删除 URL 中 '/' 之后的部分。

我正在寻找的结果是:

URL = ['ose.co.jp', 'tse.or.jp', traderupdates.nyse.com']

【问题讨论】:

  • 我不太清楚你的要求,你能包括所需的输出吗?您在寻找上述 uri 的 host 部分吗?
  • @TokenMacGuy:已更新。希望这能澄清这个问题。 :)

标签: python list python-2.7 split


【解决方案1】:

如果我没有误解这个问题,我相信这会很好:

for i in URL:
    a = i.split('/')[0]
    #do something

编辑:如果这是您想要的输出,那么

URL = [i.split('/')[0] for i in URL]

会给你你想要的。

【讨论】:

  • 如果你只对str.split返回的列表中的第一项感兴趣,你应该传递你想要的分割数,即i.split('/', 1)[0],这样它就不会浪费任何额外的努力拆分输入字符串的未使用部分。
  • @TokenMacGuy 可能的替代方案是str.partition(我从未决定它是否更清晰,但几乎类似于str.split(whatever, 1)
  • @JonClements:partition 的要点是它返回一个包含分隔符的三元组。所以我认为经验法则是:当你想要分隔符时,使用partition;如果不这样做,请使用split。
  • @abarnert 实际上 - 现在才回到我身边,主要区别是什么(这是新的一年 - 庆祝活动和所有那些坏事 - 头脑需要重新开始!)。 str.partition 如您所说返回一个 3 元组,但可以保证这样做。所以虽然它不适用于这种情况 - '123'.split('x', 1)[1] 会抛出 IndexError 而'123'.partition('x')[2] 会给你一个空字符串......
【解决方案2】:

如果您只对列表中的第一项感兴趣,可以期待使用str.partition。

这将是一个使用它的实现

>>> URL = ['ose.co.jp/frame.html', 'tse.or.jp/english/individuals/index.html', 'traderupdates.nyse.com/?sa_campaign=/internal_ads/callouts/traderupdates']
>>> [e.partition("/")[0] for e in URL]
['ose.co.jp', 'tse.or.jp', 'traderupdates.nyse.com']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多