Python:去掉字符串开头的数字
Python: Remove numbers at the beginning of a string
我有一些这样的字符串:
string1 = "123.123.This is a string some other numbers"
string2 = "1. This is a string some numbers"
string3 = "12-3-12.This is a string 123"
string4 = "123-12This is a string 1234"
我需要从字符串的开头删除这些数字。我尝试了 strip[start: end]
方法,但由于字符串格式不规则,我无法使用它?有什么建议么?
您可以使用 str.lstrip()
:
从开头删除所有数字、点、破折号和空格
string1.lstrip('0123456789.- ')
str.strip()
的参数被视为 集合,例如字符串开头属于该集合的任何字符都将被删除,直到字符串不再以此类字符开头。
演示:
>>> samples = """\
... 123.123.This is a string some other numbers
... 1. This is a string some numbers
... 12-3-12.This is a string 123
... 123-12This is a string 1234
... """.splitlines()
>>> for sample in samples:
... print 'From: {!r}\nTo: {!r}\n'.format(
... sample, sample.lstrip('0123456789.- '))
...
From: '123.123.This is a string some other numbers'
To: 'This is a string some other numbers'
From: '1. This is a string some numbers'
To: 'This is a string some numbers'
From: '12-3-12.This is a string 123'
To: 'This is a string 123'
From: '123-12This is a string 1234'
To: 'This is a string 1234'
这与@MartijnPieters 的回答几乎相同,但如果要在数字顶部删除大量标点符号和空白字符,我们可以使用 string
模块中的常量:
import string
nonalpha = string.digits + string.punctuation + string.whitespace
out = some_string.lstrip(nonalpha)
所以对于给定的样本:
for sample in [string1, string2, string3, string4]:
print('From: {!r}\nTo: {!r}\n'.format(sample, sample.lstrip(nonalpha)))
输出:
From: '123.123.This is a string some other numbers'
To: 'This is a string some other numbers'
From: '1. This is a string some numbers'
To: 'This is a string some numbers'
From: '12-3-12.This is a string 123'
To: 'This is a string 123'
From: '123-12This is a string 1234'
To: 'This is a string 1234'
我有一些这样的字符串:
string1 = "123.123.This is a string some other numbers"
string2 = "1. This is a string some numbers"
string3 = "12-3-12.This is a string 123"
string4 = "123-12This is a string 1234"
我需要从字符串的开头删除这些数字。我尝试了 strip[start: end]
方法,但由于字符串格式不规则,我无法使用它?有什么建议么?
您可以使用 str.lstrip()
:
string1.lstrip('0123456789.- ')
str.strip()
的参数被视为 集合,例如字符串开头属于该集合的任何字符都将被删除,直到字符串不再以此类字符开头。
演示:
>>> samples = """\
... 123.123.This is a string some other numbers
... 1. This is a string some numbers
... 12-3-12.This is a string 123
... 123-12This is a string 1234
... """.splitlines()
>>> for sample in samples:
... print 'From: {!r}\nTo: {!r}\n'.format(
... sample, sample.lstrip('0123456789.- '))
...
From: '123.123.This is a string some other numbers'
To: 'This is a string some other numbers'
From: '1. This is a string some numbers'
To: 'This is a string some numbers'
From: '12-3-12.This is a string 123'
To: 'This is a string 123'
From: '123-12This is a string 1234'
To: 'This is a string 1234'
这与@MartijnPieters 的回答几乎相同,但如果要在数字顶部删除大量标点符号和空白字符,我们可以使用 string
模块中的常量:
import string
nonalpha = string.digits + string.punctuation + string.whitespace
out = some_string.lstrip(nonalpha)
所以对于给定的样本:
for sample in [string1, string2, string3, string4]:
print('From: {!r}\nTo: {!r}\n'.format(sample, sample.lstrip(nonalpha)))
输出:
From: '123.123.This is a string some other numbers'
To: 'This is a string some other numbers'
From: '1. This is a string some numbers'
To: 'This is a string some numbers'
From: '12-3-12.This is a string 123'
To: 'This is a string 123'
From: '123-12This is a string 1234'
To: 'This is a string 1234'