首页 文章

Python删除字符串的最后3个字符

提问于
浏览
102

我'm trying to remove the last 3 characters from a string in python, I don'知道这些字符是什么所以我不能使用 rstrip ,我还需要删除任何空格并转换为大写

一个例子是:

foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()

这工作并给了我BS12这是我想要的,但是如果最后的第4和第3个字符是相同的我松了两个例如如果 foo = "BS11 1AA" 我只是得到 'BS'

foo 的例子可能是:

BS1 1AB
bs11ab
BS111ab

字符串可以是6或7个字符,我需要删除最后3个字符(假设没有空格)

有小费吗?

10 回答

  • 0

    这有什么问题?

    foo.replace(" ", "")[:-3].upper()
    
  • 185
    >>> foo = 'BS1 1AB'
    >>> foo.replace(" ", "").rstrip()[:-3].upper()
    'BS1'
    
  • 1

    删除任何和所有空格:

    foo = ''.join(foo.split())
    

    删除最后三个字符:

    foo = foo[:-3]
    

    转换为大写字母:

    foo = foo.upper()
    

    所有代码都在一行中:

    foo = ''.join(foo.split())[:-3].upper()
    
  • 2

    它不像你期望的那样工作,因为strip是基于字符的 . 你需要这样做:

    foo = foo.replace(' ', '')[:-3].upper()
    
  • 1
    >>> foo = "Bs12 3ab"
    >>> foo[:-3]
    'Bs12 '
    >>> foo[:-3].strip()
    'Bs12'
    >>> foo[:-3].strip().replace(" ","")
    'Bs12'
    >>> foo[:-3].strip().replace(" ","").upper()
    'BS12'
    
  • 5

    您可能会略微误解rstrip,它不会删除字符串,而是指定您指定的字符串中的任何字符 .

    像这样:

    >>> text = "xxxxcbaabc"
    >>> text.rstrip("abc")
    'xxxx'
    

    所以相反,只需使用

    text = text[:-3]
    

    (用空格替换空格后)

  • 14

    我试图避免正则表达式,但这似乎工作:

    string = re.sub("\s","",(string.lower()))[:-3]

  • 0
    • split

    • slice

    • concentrate

    这对初学者来说是一个很好的锻炼,很容易实现 .

    另一种高级方法是这样的函数:

    def trim(s):
        return trim(s[slice])
    

    对于这个问题,你只想删除最后的字符,所以你可以这样写:

    def trim(s):
        return s[ : -3]
    

    我想你已经完全关心这三个角色是什么了,所以你输了 . 你只想删除最后三个,不过他们是谁!

    如果要删除某些特定字符,可以添加一些判断:

    def trim(s):
        if [conditions]:   ### for some cases, I recommend using isinstance().
            return trim(s[slice])
    
  • 1

    你不是以错误的顺序执行操作吗?你的要求似乎是 foo[:-3].replace(" ", "").upper()

  • 87

    它取决于你对空格的定义 . 我通常会将空格称为空格,制表符,换行符和回车符 . 如果这是您的定义,您希望使用带有\ s的正则表达式替换所有空格字符:

    import re
    
    def myCleaner(foo):
        print 'dirty: ', foo
        foo = re.sub(r'\s', '', foo)
        foo = foo[:-3]
        foo = foo.upper()
        print 'clean:', foo
        print
    
    myCleaner("BS1 1AB")
    myCleaner("bs11ab")
    myCleaner("BS111ab")
    

相关问题