从字符串中删除第一个字符。

278
我想删除字符串的第一个字符。
例如,我的字符串以 : 开始,我只想删除该字符。字符串中有几个不应被删除的 : 出现。
我用的是 Python 编写代码。
5个回答

492

Python 2.x

s = ":dfa:sif:e"
print s[1:]

Python 3.x

s = ":dfa:sif:e"
print(s[1:])

两个都打印

dfa:sif:e

18
如果这是被接受的答案,那么问题本应该是“如何删除字符串的第一个字符”。 - Spaceghost
6
@Spaceghost:原帖中提到“具体来说,我想删除第一个字符。” - Sven Marnach
12
你说得对,我只是在回应问题标题和正文之间的差异。事后看来,我应该花时间去喝咖啡。 :-) - Spaceghost

52

你的问题似乎不太清楚。你说你想要从某个位置删除“一个字符”,然后又说你想要删除特定的字符。

如果你只需要删除第一个字符,你可以这样做:

s = ":dfa:sif:e"
fixed = s[1:]

如果你想在特定位置删除一个字符,你可以这样做:

s = ":dfa:sif:e"
fixed = s[0:pos]+s[pos+1:]

如果你需要在字符串中第一次遇到某个特定字符(比如“:”)时将其删除,则可以这样做:

s = ":dfa:sif:e"
fixed = ''.join(s.split(':', 1))

11
最后一个例子可以更容易地使用s.replace(":", "", 1)来完成。 - Sven Marnach

38

根据字符串的结构,您可以使用lstrip函数:

str = str.lstrip(':')

但是这样会删除所有开头的冒号,也就是说,如果你有::foo,结果将会是foo。但是如果您还有不以冒号开头的字符串,并且您不想删除第一个字符,则此函数非常有用。


12

只需这样做:

r = "hello"
r = r[1:]
print(r) # ello

这是否对Sven九年前的答案有所补充呢?此外,对于一个简单的字符串来说,使用双引号有些过头了,只需使用单引号即可。其他人称之为更加“Pythonic”。 - undefined

2

删除一个字符:

def del_char(string, indexes):

    'deletes all the indexes from the string and returns the new one'

    return ''.join((char for idx, char in enumerate(string) if idx not in indexes))

该函数会删除字符串中指定索引处的所有字符;在您的情况下,您可以使用del_char(your_string, [0])来调用该函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接