【问题标题】:Remove trailing / from list of links从链接列表中删除尾随 /
【发布时间】:2018-11-24 08:03:28
【问题描述】:

我有一个 URL 列表,我正在尝试从列表中的所有 URL 中删除尾随的“/”。我已经尝试了所有这些变体,没有错误消息,但没有删除 /:

for link in url_list:
   if link.endswith('/'):
      url_list.append(link[:-1])

for link in url_list:
    if link.endswith('/'):
       link = link[:-1]

for link in url_list:
    link = link[:-1] if link.endswith('/') else link

运行这些代码后,我 print(url_list) 并没有任何改变。

【问题讨论】:

  • 你能显示url_list吗?您当前的第一种方法(虽然不是最佳方法)应该可以工作,但是它添加了现有列表,您是要追加到新列表吗?
  • 这是一个很长的列表,所以在这里列出是不可行的。奇怪的是,我创建了一个具有相同内容的新列表并再次运行原始代码,它似乎已经工作了。主要是我希望在将更改写入 csv 时保留更改

标签: python python-3.x trailing-slash trailing


【解决方案1】:

你的第一个 for 循环几乎可以工作,尽管它会将新形成的 url 附加到你现有的 URL 上,而不是替换。

更好的方法是使用列表理解创建一个新列表并使用str.rstrip 删除尾随/

代码

url_list = ['googoo.com/foo/', 'wikipidoo.org/bar/', 'stachoverflaw.com/baz']

stripped_urls = [url.rstrip('/') for url in url_list]

print(stripped_urls)

输出

['googoo.com/foo', 'wikipidoo.org/bar', 'stachoverflaw.com/baz']

【讨论】:

  • url_list.append(link[:-1]) 虽然有效(但当然不会创建新列表)
  • 请注意,这也适用于'/'结尾的网址。不过,我可能会使用 map 而不是理解。
  • @OlivierMelançon 是的!我只是添加注释,因为您的示例仅显示真正的肯定。根据我对问题的阅读,我相信您的代码将满足 OP 的要求。很好的答案。
  • @erip 其实很好,我会添加一个不带尾随的网址 /
  • os.path.normpath 将是一个可能的(有问题的)替代方案
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 2012-07-01
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多