簡體   English   中英

python 正則表達式在新行后刪除

[英]python regex remove after new line

一旦在單詞Total_Cases之后看到 CRLF ( \r\n ) 換行序列,我就會嘗試刪除所有內容。

輸入 1:

Some text\r\nTotal_Cases      -     1     -     1\r\n**Please

需要 output 1:

Some text\r\nTotal_Cases      -     1     -     1`

輸入 2:

Some text\r\nTotal_Cases     3      1     -     -     -     4\r\n  9 of 15\r\n

所需 output:

Some text\r\nTotal_Cases     3      1     -     -     -     4

使用的代碼:

re.sub(r'(Total_Cases[\n]).*', r'\1', test1, flags=re.S).rstrip()
re.sub(r'(Total_Cases[\r\n]).*', r'\1', test1, flags=re.S).rstrip()

兩者似乎都沒有按預期工作。

您可以使用

re.sub(r'(Total_Cases.*?)[\r\n].*', r'\1', test1, flags=re.S).rstrip()

請參閱Python 演示正則表達式演示

細節

  • (Total_Cases.*?) - 第 1 組(替換模式中的\1指的是這個值): Total_Cases然后是任何 0 個或多個字符,盡可能少
  • [\r\n] - CR 或 LF 符號
  • .* - 直到字符串結尾的任何字符。

非正則表達式方法:遍歷行,一旦在行上找到匹配項,停止將行附加到結果列表:

test1 = "More necessary\r\nlines\r\nhere\r\nTotal_Cases - 1 - 1\r\n**Please"
search = "Total_Cases"
lines = test1.splitlines()
results = []
for line in lines:
    results.append(line)
    if search in line:
        break
print ( "\n".join(results) )

Output:

More necessary
lines
here
Total_Cases - 1 - 1

為您輸入的每個字符串嘗試此操作:

input1 =  'Total_Cases - 1 - 1\r\n**Please'
input1.splitlines()[0]

你可以試試這個:

x = 'Total_Cases - 1 - 1\r\n**Please'

index = x.index('\r\n')

if index:
    print(x[:index])

else:
    print(x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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