很抱歉,如果这是一个愚蠢的问题,但我的代码存在一些问题。
我有一个Python脚本可以擦除Reddit并将顶部图片设置为我的桌面背景。
如果图片足够大,我希望它只能下载,但我收到一个奇怪的错误。
>>> m = '1080x608'
>>> w = m.rsplit('x', 1)[0]
>>> print(w)
1080
>>> h = m.rsplit('x', 1)[1]
>>> print(h)
608
这种方法很好,但以下情况并非如此,尽管几乎相同。
>>> m = '1280×721'
>>> w = m.rsplit('x', 1)[0]
>>> h = m.rsplit('x', 1)[1]
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
h = m.rsplit('x', 1)[1]
IndexError: list index out of range
答案 0 :(得分:0)
×
!= x
。 Split返回单元素列表,并且您正尝试从中检索第二个元素。
'1080x608'.rsplit('x', 1) # ['1080', '608']
'1280×721'.rsplit('x', 1) # ['1280\xc3\x97721']
在第二种情况下列表中没有第二个元素 - 它只包含一个元素。
MCVE将是:
l = ['something']
l[1]
例外:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
为确保将字符串拆分为两部分,您可以使用partition
。
在第一次出现sep时拆分字符串,并返回一个3元组 包含分隔符之前的部分,分隔符本身和 分隔符之后的部分。如果找不到分隔符,则返回a 包含字符串本身的3元组,后跟两个空字符串。
w, sep, h = m.partition('x')
# h and sep will be empty if there is no separator in m
答案 1 :(得分:0)
在您的第二个示例中,×
与x
不同,而是乘法符号。如果你从某个地方获得这些蜇然后解析它们,你应该先做
m = m.replace('×', 'x')