1

我有一个巨大的行列表,每行看起来如下

1 01 01 some random text

零件是一个参考编号,随行而1 01 01变。我想删除三个参考编号之间的两个空格,以便这些行如下所示。

10101 some random text

显然,这需要一个for循环。问题是我应该在我不能使用的循环中写什么strip

for i in my_list:
    i.strip()

因为那,如果有的话,会删除所有的空格,给我

10101somerandomtext

我不想要。但如果我写

for i in my_list:
    i.remove(4)
    i.remove(1)

我收到一条错误消息'str' object has no attribute 'remove'。在这种情况下,正确的解决方案是什么。

提前致谢。

4

3 回答 3

3

str.replace如果数字总是在开头,您可以使用函数接受可选参数的事实count

for l in mylist:
    print l.replace(' ', '', 2)

请注意,我在print这里这样做是有原因的:您不能就地更改字符串,因为字符串是不可变的(这也是它们没有remove方法并replace返回修改后的字符串,但保留初始字符串的原因完好无损的)。因此,如果您需要将它们放在一个列表中,那么创建另一个这样的列表会更简洁:

newlist = [l.replace(' ', '', 2) for l in mylist]

像这样覆盖列表也是安全的:

mylist = [l.replace(' ', '', 2) for l in mylist]
于 2012-12-02T10:55:04.077 回答
1

split接受第二个参数 - 要进行的分割数

for i in my_list:
    components = i.strip(" ", 3)
    refnum = ''.join(components[:3])
    text = components[3]

或者在 python 3 中:

for i in my_list:
    *components, text = i.strip(" ", 3)
    refnum = ''.join(components)
于 2012-12-02T11:26:49.100 回答
1

使用replacecount的参数来替换前 2 个空格。

a = "1 01 01 some random text"
a.replace(" " , "", 2)
>>> '10101 some random text'
于 2012-12-02T10:54:59.910 回答