【问题标题】:Insert Repeated Variables into String [duplicate]将重复变量插入字符串[重复]
【发布时间】:2018-12-04 18:03:56
【问题描述】:

有没有更好的方法将变量插入字符串?

比...更少重复的东西

with open('zlog.txt', 'a') as log:
    log.write('[ %s ] Finished scrolling.\n[ %s ] #%s clicks.\n[ %s ] Number of Elements: %s\n' % (finish_time, finish_time, str(x), finish_time, str(len(elements))))

我经常重复使用finish_time 以便为日志中的条目添加时间戳。

... % (finish_time, finish_time, str(x), finish_time, str(len(elements)))

【问题讨论】:

  • @Dark 我的问题不是像标题所暗示的那样将变量插入字符串,而是插入重复的最简洁方法变量
  • 一个非常简单的选项是使用do t = finish_time,然后你可以使用t, t, x, t, len(elements)。 (另外,您不需要 str(x)str(len(elements)) — 将参数传递给 %s 会自动调用 str。)
  • @abarnert 我宁愿为变量取一个更具描述性的名称,但感谢您提供有关字符串转换的信息!
  • @Anthony 检查更新的链接:)。
  • @Anthony 副本中有两个链接,您可以同时查看。后者是您想要的。

标签: python string variables


【解决方案1】:

format 中使用位置参数说明符:

>>> '{0} {0}, {1}!'.format('hello', 'world')
'hello hello, world!'
>>>

【讨论】:

  • 哦,哇,太棒了!语法是write(...).formate(...)吗?
  • 在您的示例中,它类似于log.write('[ {0} ] ... [ {0} ] ... [ {1} ] ...'.format(finish_time, x, ...))。记住formatstr 的方法,而不是write 返回的对象的方法。
  • 这应该是最好的答案了。如果没有其他结果,我会将其标记为答案。
  • 索引是否必须从0 开始,或者数字是任意的?
  • 它可以是任何顺序,例如'{0}, {1}, {0}!'.format('hello', 'world') 会产生'hello, world, hello!'
【解决方案2】:

如果您使用的是 python 3.6,则有此功能 fstrings,

x = 5
print(f'Argument: {x}')

这会给你:

Argument: 5

【讨论】:

  • 啊,好的 ole 模板文字?我们在 JS 中有这些。不幸的是,我没有使用 Python 3,因为我不确定我是否能够在我的生产环境中使用它:(
  • 但这无助于减少重复。 OP 的示例需要 {finish_time} 三个不同的时间。
  • 啊。我知道了。当我回答这个问题时,标题是“将变量插入字符串”,我发现在我发布这个答案后它已经改变了。
  • @Anthony 你的生产环境是什么?来自 Ubuntu 和 RedHat/Centos 的最新 LTS仅带有 Python 3。之前的版本带有 2 和 3。而且他们已经将 Python 3 作为可选包提供了多年。我怀疑你是否真的有问题——但实际检查总比猜测好。
  • @Anthony 如果您有足够的代表去聊天,请参阅the page about the Python room。无论如何,我已经看到这里回答了 Selenium 问题。 Scrapy,几乎所有的问题都是新手 Python 问题而不是难的 Scrapy 问题,所以……不确定是否真的有很多专家可以帮助解决后者……
【解决方案3】:

我喜欢使用格式方法:

'my-var-value : {}'.format(variable)

格式能够读取任何对象或数据类型并将其直接传递给字符串

格式能够将变量传递给字符串而无需索引编号

'my-var 1 : {} & my-var 2 : {}'.format(var1,var2)

【讨论】:

  • 所以你甚至不需要在括号中使用索引?这会自动处理吗?那么他们如何知道哪些会被重复,哪些是独一无二的?
  • 他们通过括号内变量的顺序知道它。第一个索引为 0,下一个索引为 1。您可以在他们的 string formatting guide 中阅读更深入的解释
  • 这对重复毫无帮助。第一个{}等价于{0},第二个等价于{1}等。当你没有有重复参数时非常方便,但它并不能解决OP的问题。
  • 我第一次阅读您的问题时说:如何将变量插入字符串。它是 6 分钟前编辑的。
  • @Willysatrionugroho 你一定是第一次误读了我的问题。您可以查看我提出的问题的编辑!尽管如此,您的回答仍然很有趣且有用
猜你喜欢
  • 2011-03-22
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2017-09-08
  • 2020-11-21
  • 2017-10-22
  • 1970-01-01
  • 2016-11-11
相关资源
最近更新 更多