我對Python中的strip()
有疑問。我想從字符串中去掉一個分號,當分號在字符串的末尾時,我知道該怎麼做,但如果它不是最後一個元素,我該怎麼做,但是說第二個到最後一個元素。Python中的條帶
例如:
1;2;3;4;\n
我想帶,其最後分號。
謝謝
我對Python中的strip()
有疑問。我想從字符串中去掉一個分號,當分號在字符串的末尾時,我知道該怎麼做,但如果它不是最後一個元素,我該怎麼做,但是說第二個到最後一個元素。Python中的條帶
例如:
1;2;3;4;\n
我想帶,其最後分號。
謝謝
剝去其他字符以及。
>>> '1;2;3;4;\n'.strip('\n;')
'1;2;3;4'
>>> string = "1;2;3;4;\n"
>>> string.strip().strip(";")
"1;2;3;4"
這將第一條帶的任何前導或尾隨白色空間,然後除去任何前導或尾隨分號。
試試這個:
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")
如果你只想使用帶功能,這是一個方法: 使用切片表示法,你可以帶()函數的範圍限制到字符串的一部分,並追加「\ 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:]
如果什麼有在多個連續的分號 結束?剝去所有或僅一個? –