给定一个字符串“VAR = value”我想(仅)在第一个'='符号(< value>可能包含更多'='符号)中拆分它,类似于这样:
var, sep, value = "VAR=value".partition('=')
有没有办法不声明变量'sep'?像这样(只是编写语法):
var, -, value = "VAR=value".partition('=')
为了完整起见,我的目标是Python v 2.6
答案 0 :(得分:45)
_
确实是“无关紧要的名字”的一个非常受欢迎的选择 - 它是一个合法的名称,在视觉上不引人注目等等。但有时这些品质可能会阻碍你。例如,I18N和L10N的GNU gettext模块,它是Python标准库的一部分,惯用于_
非常不同,使用诸如......之类的习语:
_ = gettext.gettext
# ...
print _('This is a translatable string.')
标记并翻译代码中的所有文字字符串消息(也利用_('...')
的相对视觉不引人注意。显然,使用此模块和习惯用法的任何代码都不应该使用_
来意思是完全不同的东西(“一个不关心的名字”)。
因此,第二个有用的替代方案可以是将名称unused
用于以视觉上更明确的方式指示这种“不关心”的情况。 Google的python style guide建议使用_
或unused_
的前缀 - 后者可能有点冗长,但往往非常明确,例如:
name, unused_surname, salutation = person_data
print "Hello, %s %s!" % (salutation, name)
清楚地表明person_data
是一个三项目序列(可能是一个元组),而你正在跳过的项目(根本不使用)是姓氏(因为你想打印一个友好的消息)比如“你好,先生亚历克斯!”或“你好,小猪小姐!”;-)。 (pylint
和类似工具可以警告您,如果您有未使用的_
或unused_...
以外的变量,当然也会警告您 一个名为unused_something
的变量! - )。
答案 1 :(得分:14)
几乎就在那里:
var, _, value = "VAR=value".partition('=')
_
通常被视为无关变量。
答案 2 :(得分:4)
该语言中没有任何正式的内容;你可以使用任何抛弃变量。就标准而言,我已经看到过在Python和其他语言中偶尔使用的下划线。唯一的问题是,在本地化时,下划线用作gettext
的别名。但是如果你没有进行本地化,或者没有使用全局绑定,那么下划线应该可以正常工作。
答案 3 :(得分:3)
非常奇怪的问题,因为你可以做到:
var, _, value = s.partition(sep)
并且不关心_
变量,但_
只是sep
的名称,var
或value
。顺便使用str.split
>>> var, value = "VAR=value".split('=')
>>> var, value
('VAR', 'value')
>>>
答案 4 :(得分:2)
为什么不使用'VAR=value'.split('=')
?这无视分隔符。
编辑(以便在评论中提供Cristi的例子):
提示: anystring .split( delimiter ,1)是一个 你想要的有用技巧 在字符串中搜索子字符串和 然后在之前处理所有事情 substring(最终在第一个 返回列表的元素)和 一切都在它之后(最终进入 第二个元素)。
答案 5 :(得分:2)
Python没有语法来避免在解包等中进行赋值。
正如其他人所提到的,有一种惯例是将_
用于您不关心的变量。这被广泛使用和理解,但我个人认为它未得到充分利用。如果您说var, _, value = "VAR=value".partition('=')
,您必须知道在您阅读代码时,_
是什么以及您不关心它的原因。如果你说var, sep, value
你同时记录。这对于str.partition
来说并不是很重要,但我之前看过_, _, name, _, city, _ = some_weird_function()
并发现它没有比将所有内容解压缩到有用的名称更有用。
如果您愿意,可以在技术上使用str.split
。 var, value = "foo=bar=baz".split("=", 1)
。
答案 6 :(得分:1)
_通常用作你的名字不关心 *例如,在我们只对名字和姓氏感兴趣的时刻,在包含姓名,姓氏和昵称的元组中,可以使用_来表示此时名称不重要:
data = ('John', 'Mate', 'Little John')
name, surname, _ = data
答案 7 :(得分:0)
正如其他人所说,下划线(_
)是标准。但如果使用下划线进行翻译,我认为双下划线是最好的选择。
var, __, value = "VAR=value".partition('=')
比这些更好:
var, unused, value = "VAR=value".partition('=')
var, unused_del, value = "VAR=value".partition('=')
var, _del, value = "VAR=value".partition('=')
答案 8 :(得分:0)
还可以选择使用索引:
a, b = my_list[0, 2]