gpt4 book ai didi

python - Python 的 str.rstrip() 函数中的错误,还是我自己的愚蠢?

转载 作者:太空狗 更新时间:2023-10-29 20:32:52 24 4
gpt4 key购买 nike

要么这是一个错误,要么我即将学习一些关于 Python 行为方式的新知识。 :)

我有一个充满键/值对的字典。每个键都有一个唯一的前缀,ias_XX_XX_。我正在尝试获取字典中每个唯一前缀的列表。

  1. 首先,我得到一个以 '_x1' 结尾的所有键的列表。
  2. 接下来,我使用 rstrip('_x1') 从它们中去除所有的 '_x1'

除了最后一个 ias_1_1_x1 之外,这对它们都适用。它不再被剥离为 ias_1_1,而是变为 ias_。运行代码自己看看:

d = {
'ias_16_10_x2': 575,
'ias_16_10_x1': 0,
'ias_16_10_y1': 0,
'ias_16_10_y2': 359,
'ias_16_9_x2': 575,
'ias_16_9_x1': 0,
'ias_16_9_y1': 18,
'ias_16_9_y2': 341,
'ias_1_1_y1': 0,
'ias_1_1_y2': 359,
'ias_1_1_x2': 467,
'ias_1_1_x1': 108,
}

x1_key_matches = [key for key in d if '_x1' in key]
print x1_key_matches

unique_ids = []
for x1_field in x1_key_matches:
unique_ids.append(x1_field.rstrip('_x1'))

print unique_ids

实际输出:(Python 2.6、2.7 和 3.2(必须将 print 更改为 print() 才能使 3.x 工作))

['ias_16_10_x1', 'ias_16_9_x1', 'ias_1_1_x1']
['ias_16_10', 'ias_16_9', 'ias'] # <<<--- Why isn't this last one ias_1_1???

预期输出:

['ias_16_10_x1', 'ias_16_9_x1', 'ias_1_1_x1']
['ias_16_10', 'ias_16_9', 'ias_1_1']

如果我将 key 的名称从 ias_1_1 更改为类似 ias_1_2ias_1_3 的名称,则不会发生故障。为什么会这样?

最佳答案

rstrip() 的参数是一组要剥离的字符,而不是一个确切的字符串:

>>> "abcbcbaba".rstrip("ab")
"abcbc"

一般提示:如果您怀疑某个函数中存在错误,请阅读其 documentation .

关于python - Python 的 str.rstrip() 函数中的错误,还是我自己的愚蠢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com