我有一个巨大的行列表,每个行看起来如下
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'
。在这种情况下,什么是正确的解决方案。
提前致谢。
答案 0 :(得分: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]
答案 1 :(得分:1)
使用replace的count
参数替换前2个空格。
a = "1 01 01 some random text"
a.replace(" " , "", 2)
>>> '10101 some random text'
答案 2 :(得分: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)