2012-09-24 14 views
2

我對Python中的strip()有疑問。我想從字符串中去掉一個分號,當分號在字符串的末尾時,我知道該怎麼做,但如果它不是最後一個元素,我該怎麼做,但是說第二個到最後一個元素。Python中的條帶

例如:

1;2;3;4;\n 

我想帶,其最後分號。

謝謝

+0

如果什麼有在多個連續的分號 結束?剝去所有或僅一個? –

回答

7

剝去其他字符以及。

>>> '1;2;3;4;\n'.strip('\n;') 
'1;2;3;4' 
+0

我如何剝離它而不剝離換行符? –

+2

你不能;僅*剝離*從兩端刪除。如果你需要換行符,然後將其添加回來。 –

+1

沒有比較大的,但你可能想用rstrip代替 – wim

1
>>> string = "1;2;3;4;\n" 
>>> string.strip().strip(";") 
"1;2;3;4" 

這將第一條帶的任何前導或尾隨白色空間,然後除去任何前導或尾隨分號。

3
>>> "".join("1;2;3;4;\n".rpartition(";")[::2]) 
'1;2;3;4\n' 
+0

:)))但非常神祕。 – pepr

0

試試這個:

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' 

提供其他的答案可能更快,因爲他們是根據您的具體的例子,但是這一次是一個更靈活一點。

0

re.sub(r';(\ W * $)',r'\ 1','1; 2; 3; 4; \ n') - >'1; 2; 3; 4 \ n '

0

您可以用分號分割字符串,然後再次使用返回非空部分;作爲分離器

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, ';') 
3

如何取代?

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

如果你只想使用帶功能,這是一個方法: 使用切片表示法,你可以帶()函數的範圍限制到字符串的一部分,並追加「\ 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:]