Python中的Strip

Python中的Strip,python,strip,Python,Strip,关于Python中的strip(),我有一个问题。我试图从字符串中去掉分号,我知道当分号在字符串的末尾时该怎么做,但是如果它不是最后一个元素,而是第二个到最后一个元素,我该怎么做 例如: 我想去掉最后一个分号。也去掉其他字符 >>> '1;2;3;4;\n'.strip('\n;') '1;2;3;4' 这将首先删除任何前导或尾随空格,然后删除任何前导或尾随分号 试试这个: >>> "".join("1;2;3;4;\n".rpartition(";")[:

关于Python中的
strip()
,我有一个问题。我试图从字符串中去掉分号,我知道当分号在字符串的末尾时该怎么做,但是如果它不是最后一个元素,而是第二个到最后一个元素,我该怎么做

例如:


我想去掉最后一个分号。

也去掉其他字符

>>> '1;2;3;4;\n'.strip('\n;')
'1;2;3;4'
这将首先删除任何前导或尾随空格,然后删除任何前导或尾随分号

试试这个:

>>> "".join("1;2;3;4;\n".rpartition(";")[::2])
'1;2;3;4\n'
def remove_last(string):
    index = string.rfind(';')
    if index == -1:
        # Semi-colon doesn't exist
        return string
    return string[:index] + string[index+1:]
这应该能够删除行的最后分号,而不管后面是什么字符

>>> remove_last('Test')
'Test'
>>> remove_last('Test;abc')
'Testabc'
>>> remove_last(';test;abc;foobar;\n')
';test;abc;foobar\n'
>>> remove_last(';asdf;asdf;asdf;asdf')
';asdf;asdf;asdfasdf'

提供的其他答案可能更快,因为它们是根据您的具体示例定制的,但这一个更灵活。

您可以使用分号拆分字符串,然后使用;作为分隔符

re.sub(r';(\W*$)', r'\1', '1;2;3;4;\n') -> '1;2;3;4\n'
parts = '1;2;3;4;\n'.split(';')
non_empty_parts = []
for s in parts:
    if s.strip() != "": non_empty_parts.append(s.strip())
print "".join(non_empty_parts, ';')
更换怎么样

string1='1;2;3;4;\n'
string2=string1.replace(";\n","\n")

如果您只想使用剥离功能,这是一种方法: 使用切片表示法,可以将strip()函数的作用域限制为字符串的一部分,并在末尾附加“\n”:

# create a var for later
str = "1;2;3;4;\n"
# format and assign to newstr
newstr = str[:8].strip(';') + str[8:]
使用rfind()方法(类似于Micheal0x2a的解决方案),可以使该语句适用于许多字符串:

# create a var for later
str = "1;2;3;4;\n"
# format and assign to newstr
newstr = str[:str.rfind(';') + 1 ].strip(';') + str[str.rfind(';') + 1:]

如果不剥掉新线,我怎么剥掉它呢?你不能;剥离仅从端部移除。如果您需要换行符,请在.No biggy之后添加它,但您可能希望使用
rstrip
insteadMy+1到wim。在这种情况下,您应该使用
rstrip
。原因是
strip
参数被解释为一组应该剥离的字符(即所有字符——顺序并不重要)。如果分号用在开头(即第一个元素为空),则
条带
也会删除第一个分号。如果最后一个“;”如“1”;2.3.4; \t\n'如果结尾有多个连续分号怎么办?全部脱光还是只脱光一个?
# create a var for later
str = "1;2;3;4;\n"
# format and assign to newstr
newstr = str[:8].strip(';') + str[8:]
# create a var for later
str = "1;2;3;4;\n"
# format and assign to newstr
newstr = str[:str.rfind(';') + 1 ].strip(';') + str[str.rfind(';') + 1:]