我有一份清单清单.我想从它们中删除前导和尾随空格.该strip()方法返回不带前导和尾随空格的字符串副本.单独调用该方法不会进行更改.通过这个实现,我得到了一个'array index out of bounds error'.在我看来,列表中的每个列表(0-len(网络)-1)和"ay"对于这些列表中的每个字符串都会有"一个x"(0-len(networks [x])又名我和j应该准确地映射到合法的,索引而不是超出范围?
i = 0
j = 0
for x in networks:
for y in x:
networks[i][j] = y.strip()
j = j + 1
i = i + 1
Run Code Online (Sandbox Code Playgroud)
Tim*_*ker 13
j迭代完第一个列表后,您忘记重置为零.
这就是为什么你通常不在Python中使用显式迭代的原因之一 - 让Python为你处理迭代:
>>> networks = [[" kjhk ", "kjhk "], ["kjhkj ", " jkh"]]
>>> result = [[s.strip() for s in inner] for inner in networks]
>>> result
[['kjhk', 'kjhk'], ['kjhkj', 'jkh']]
Run Code Online (Sandbox Code Playgroud)
这会生成一个新列表:
>>> x = ['a', 'b ', ' c ']
>>> map(str.strip, x)
['a', 'b', 'c']
>>>
Run Code Online (Sandbox Code Playgroud)
编辑:改为string使用内置类型 ( str)时无需导入。
你不需要i, j自己计算,只需枚举,看起来你也不会增加i,因为它不在循环中而且j不在内部大多数循环中,这就是为什么你有一个错误
for x in networks:
for i, y in enumerate(x):
x[i] = y.strip()
Run Code Online (Sandbox Code Playgroud)
另请注意,您不需要访问网络,但访问"x"并替换值将起作用,因为x已经指向 networks[index]
| 归档时间: |
|
| 查看次数: |
21686 次 |
| 最近记录: |