Python:删除字符串中第一个字母前的所有字符

时间:2017-09-21 01:51:28

标签: python string

彻底搜索后,我可以找到如何删除特定字母前的所有字符,但不能删除任何字母之前的字符。

我正在尝试从此处转换字符串:

"             This is a sentence. #contains symbol and whitespace

对此:

This is a sentence. #No symbols or whitespace

我尝试过以下代码,但第一个示例中的字符串仍然出现。

for ch in ['\"', '[', ']', '*', '_', '-']:
     if ch in sen1:
         sen1 = sen1.replace(ch,"")

这不仅因为某些未知原因而无法删除示例中的双引号,而且也不会删除前导空格,因为它会删除空白的所有。< / p>

提前谢谢。

6 个答案:

答案 0 :(得分:1)

不要只删除空格,而是在第一个字母之前删除任何字符,请执行以下操作:

#s is your string
for i,x in enumerate(s):
    if x.isalpha()         #True if its a letter
    pos = i                   #first letter position
    break

new_str = s[pos:]

答案 1 :(得分:0)

您可以使用re.sub

import re
text = "             This is a sentence. #contains symbol and whitespace"

re.sub("[^a-zA-Z]+", " ", text)

re.sub(匹配模式,替换字符串,搜索字符串)

答案 2 :(得分:0)

这是一个非常基本的版本;即它使用Python中的初学者很容易理解的语法。

your_string = "1324 $$ '!'     '' # this is a sentence."
while len(your_string) > 0 and your_string[0] not in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz":
    your_string = your_string[1:]
print(your_string)

#prints "this is a sentence."

优点:简单,无需导入

缺点:如果您觉得使用列表推导感觉很舒服,可以避免使用while循环。      此外,您使用正则表达式进行比较的字符串可能更简单。

答案 3 :(得分:0)

删除所有空格和标点符号:

>>> text.lstrip(string.punctuation + string.whitespace)
'This is a sentence. #contains symbol and whitespace'

或者,另一种方法是找到第一个ascii字母的字符。例如:

>>> pos = next(i for i, x in enumerate(text) if x in string.ascii_letters)
>>> text[pos:]
'This is a sentence. #contains symbol and whitespace'

答案 4 :(得分:0)

将所有内容删除到第一个字母字符。

import itertools as it


s = "      -  .] *    This is a sentence. #contains symbol and whitespace"
"".join(it.dropwhile(lambda x: not x.isalpha(), s))
# 'This is a sentence. #contains symbol and whitespace'

或者,迭代字符串并测试每个字符是否在黑名单中。如果是真正剥离字符,否则短路。

def lstrip(s, blacklist=" "):    
    for c in s:
        if c in blacklist:
            s = s.lstrip(c)
            continue
        return s

lstrip(s, blacklist='\"[]*_-. ')
# 'This is a sentence. #contains symbol and whitespace'

答案 5 :(得分:0)

import re
s = "  sthis is a sentence"

r = re.compile(r'.*?([a-zA-Z].*)')

print r.findall(s)[0]