簡體   English   中英

如何刪除字符串的最后一個字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM