[英]How to remove last character of a string
我有很多類似的行
"HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ| |"
"HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|HHH|"
"HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|III| |"
我想從這些包含額外 | 的行中刪除 last pipe 和空格
我需要的 output 是
"HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ|"
"HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|HHH|"
"HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|III|"
我試過 1 個字符串,但問題是這也消除了該字符串中存在的空格。
A= "HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ| |"
Y=A.split()
print(Y)
final=[]
if Y[-1]=='~':
ab=Y[:-1]
cd=''.join(ab)
print(cd)
else:
ef=''.join(Y)
print(ef)
使用帶有 1 個或多個空格的正則表達式,然后是 pipe,然后是行尾。
your_string = re.sub("\s+\|$","",your_string)
測試:
>>> your_string = "HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ| |"
>>> re.sub("\s+\|$","",your_string)
'HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ|'
>>> your_string = "HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ|"
>>> re.sub("\s+\|$","",your_string)
'HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ|'
我會在這里使用正則表達式替換:
inp = "HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ| |"
output = re.sub(r'(?<=\|)\s*\|$', '', inp)
print(output) # HHH |**** XYzz| *ABC*hgg|G~GG|G|HJJ|JJJ|
此處使用的正則表達式模式表示匹配:
(?<=\|) assert that last pipe separated column is empty
\s* match zero or more whitespace characters
\| match final pipe
$ end of the input
后面的(?<=\|)
確保我們不會為這樣的事情去掉最后的 pipe :
|ABC|DEF|GHI |
在這種情況下,空格是數據的一部分,最后一個元素不為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.