【问题标题】:Including a defined term in quotation marks在引号中包含定义的术语
【发布时间】:2016-03-29 07:39:31
【问题描述】:

有一个我经常玩的游戏叫 ROBLOX,自从更新后,你无法保存你的头像。我使用python对网站进行编码(因为您仍然可以查看它,您无法保存它)并制作它以便将其保存到您的计算机上。 我定义了这些术语:

  • CharacterID(作为用户的 ID)

http://www.roblox.com/thumbnail/user-avatar?userId=19088261&thumbnailFormatId=124&width=352&height=352

(我的 ID 是 19088261(我在编码中找到了那个 URL))

  • Robloxian(作为玩家的用户名)

我尝试用它来打开和保存图片:

import urllib

Robloxian = int(input("First off, before we start, what's your roblox username?: "))
CharacterID = int(input("ID: "))
URL = "http://www.roblox.com/thumbnail/user-avatar?userId=(CharacterID)&thumbnailFormatId=124&width=352&height=352"
urllib.urlretrieve(URL, "(Robloxian)s Avatar.jpg"))

我怎样才能让它下载图像?

【问题讨论】:

  • 哪个引号?
  • 如果您尝试将字符 id 和用户名插入到后面的字符串中,请查找 Python 和字符串格式。
  • URL 中的引号和第 5 行和第 6 行的 .jpg 文件名。我在 URL 中有 (characterID),因为我希望它更改为该人在以下情况下写为整数的 ID它要求然后将文件名更改为他们的用户名。即 tommygibsons2740 的 Avatar.jpg
  • 为什么你的问题被标记为 [python-3.5]? urllib.urlretrieve 最后一次出现在 Python 2 中。

标签: python import urllib function python-3.5


【解决方案1】:

()圆括号(单数:圆括号),而不是"quotation mark"(我用引号括起来)。在 Python 中,括号和引号都不会将一个字符串插入到另一个字符串中……也许您正在考虑其他语言?

我建议您(重新)阅读“The Python Tutorial”,其中包括一个introduction to strings 和一个关于fancier output formatting 的部分。

官方 Python 文档包括更正式的 string formattingformat string syntaxformat specification mini-language 定义。这些通常通过使用字符串的.format method 来调用。

(还有一个较旧的printf-style string formatting syntax,如果您有 C 或 C 派生语言(如 Java 和 PERL)的背景,您可能会更熟悉它。如果您还不知道,唯一的理由是学习它将是在较旧的 Python 代码中识别它。)

字符串也可以用+ 操作符粘合在一起:

url = url_prefix + character_id + url_suffix

这是一个精简的版本,展示了你想用这个去哪里:

import urllib

character_id = raw_input('Roblox character ID: ')
url_template = 'http://www.roblox.com/thumbnail/user-avatar?userId={0:s}&thumbnailFormatId=124&width=352&height=352'
url = url_template.format(character_id)
file_name = character_id + '.html'
urllib.urlretrieve(url, file_name)

需要注意的变化:

  1. 在 Python 2 中使用 raw_input(在 Python 3 中重命名为 input)。它不仅更安全,而且总是返回您想要的数据类型:字符串。与int 搞混的都是浪费时间。

  2. url_template 是“包含”字符串,{0:s} 标记将插入其他字符串的位置(在本例中为角色的 ID 号)。

  3. 模板字符串的.format 方法返回一个新字符串,稍后与urlretrieve 一起使用。

  4. file_name 很简单,我只需将两个字符串与+ 粘在一起即可。

  5. 我关注了半官方的Style Guide for Python Code(又名“PEP 8”),特别是“Naming Conventions”部分。

  6. roblox.com 网址 没有检索图像,而是包含 img 标记的一些 HTML。我已将文件名更改为字符 ID 和“.html”扩展名。 (当头像属于特定角色时,为什么要以用户命名文件?)

您可能希望将其存储在带有urlopen 的字符串中,而不是将其下载到文件中,然后解析该字符串(搜索此站点以了解如何)以获取@ 的src 属性987654353@标签,最后使用urlretrieve那个保存为JPEG文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 2011-02-11
    • 2021-12-08
    • 2020-03-19
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多