我'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 回答
这有什么问题?
删除任何和所有空格:
删除最后三个字符:
转换为大写字母:
所有代码都在一行中:
它不像你期望的那样工作,因为strip是基于字符的 . 你需要这样做:
您可能会略微误解rstrip,它不会删除字符串,而是指定您指定的字符串中的任何字符 .
像这样:
所以相反,只需使用
(用空格替换空格后)
我试图避免正则表达式,但这似乎工作:
string = re.sub("\s","",(string.lower()))[:-3]
split
slice
concentrate
这对初学者来说是一个很好的锻炼,很容易实现 .
另一种高级方法是这样的函数:
对于这个问题,你只想删除最后的字符,所以你可以这样写:
我想你已经完全关心这三个角色是什么了,所以你输了 . 你只想删除最后三个,不过他们是谁!
如果要删除某些特定字符,可以添加一些判断:
你不是以错误的顺序执行操作吗?你的要求似乎是
foo[:-3].replace(" ", "").upper()
它取决于你对空格的定义 . 我通常会将空格称为空格,制表符,换行符和回车符 . 如果这是您的定义,您希望使用带有\ s的正则表达式替换所有空格字符: