Python 删除字符串中的第一个字符会留下空白

Python 删除字符串中的第一个字符会留下空白,python,Python,我有一个如下所示的文本文件: 6 Hello World 我是这样读的: with open("test.txt") as fp: for line in fp: l = line.split(" ") print(l) 这会将整个字符串打印给我: 6 Hello World 我想删除“6”字符,只需将字符串“Hello World”存储在另一个字符串中: 我已经做到了 newStr = l.replace(l[0],"") 现在我知道了: He

我有一个如下所示的文本文件:

6 Hello World
我是这样读的:

with open("test.txt") as fp:
    for line in fp:
        l = line.split(" ")
        print(l)
这会将整个字符串打印给我:

6 Hello World
我想删除“6”字符,只需将字符串“Hello World”存储在另一个字符串中:

我已经做到了

newStr = l.replace(l[0],"")
现在我知道了:

 Hello World
现在我想删除前导空格,并存储字符串。 我试过这个:

newStr2 = newStr.replace(newStr[0],"")
print(newStr2)
但这表明:

HelloWorld
而不是
Hello World
(无前导空格字符) 我做错了什么?
另外,在newStr2上使用len()会告诉我长度是11,尽管它是10。len()是否包含换行符?

这是因为
newStr.replace(newStr[0],“”)
newStr.replace(“,”)
相同,后者用空字符串替换单个空格的每个实例

您需要的是
lstrip
,它从字符串中删除所有前导空格

更重要的是,为了不那么冗长,您可以简单地从字符串中切掉前导字符,然后
lstrip

newStr = l[1:].lstrip()
另一方面,新行字符是长度为1的字符,在
len
中有适当的说明:

>>> len('\n')
1

专业提示:
line.split()。看


基本上,您的代码变成:

with open("test.txt") as fp:
    for line in fp:
        l = line.split()
        print(l[1:].lstrip())

另一种方法是,如果您想完全跳过替换(并假设所有数据都遵循此模式),只需从
.strip()
on返回的列表的第二个元素中获取所有内容,使用
连接和切片,如下所示:

l = " ".join(line.split(" ")[1:])