python从列表中的字符串中删除空格

oje*_*jef 6 python list

我有一份清单清单.我想从它们中删除前导和尾随空格.该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)


Fab*_*ian 5

这会生成一个新列表:

>>> x = ['a', 'b ', ' c  ']
>>> map(str.strip, x)
['a', 'b', 'c']
>>> 
Run Code Online (Sandbox Code Playgroud)

编辑:改为string使用内置类型 ( str)时无需导入。

  • 但是就地操作很容易使用:`x[:] = map(str.strip,x)`。另请注意,您不需要为此“导入字符串”。你可以只做`str.strip` (2认同)

Anu*_*yal 5

你不需要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]