簡體   English   中英

如何從python代碼的輸出中刪除“ _”?

[英]How to remove '_' from the output in python code?

我寫了一個python代碼,最終輸出中帶有'_'符號。 所以我想刪除這個符號。

import re
from itertools import groupby

file = ["meta_data_02154.csv", "meta_data_021694.csv", "meta_data_loop_02365.csv", "meta_data_loops_0256365.csv", "output.csv"]

f = [list(i) for j, i in groupby(file, lambda a : re.split(r'\d*.csv$', a)[0])]
print(f)

for pattern in f:
        #print(pattern)
        print((re.split(r'\d*.csv$', pattern[0]))[0])

輸出:

[['meta_data_02154.csv', 'meta_data_021694.csv'], ['meta_data_loop_02365.csv'], ['meta_data_loops_0256365.csv'], ['output.csv']]
meta_data_
meta_data_loop_
meta_data_loops_
output

需求輸出:

[['meta_data_02154.csv', 'meta_data_021694.csv'], ['meta_data_loop_02365.csv'], ['meta_data_loops_0256365.csv'], ['output.csv']]
meta_data
meta_data_loop
meta_data_loops
output

使用rstrip()

import re
from itertools import groupby

file = ["meta_data_02154.csv", "meta_data_021694.csv", "meta_data_loop_02365.csv", "meta_data_loops_0256365.csv", "output.csv"]

f = [list(i) for j, i in groupby(file, lambda a : re.split(r'\d*.csv$', a)[0])]
print(f)

for pattern in f:
        #print(pattern)
        print((re.split(r'\d*.csv$', pattern[0]))[0].rstrip('_'))

使用rstrip()

val = "sad_"
print(val.rstrip('_'))
Output: sad

描述

rstip()返回字符串的副本,其中刪除了右尾字符。

另外,在這種情況下, print(val[:-1])將得到相同的結果。

嘗試使用模式r'_?\\d*.csv$'

例如:

import re
from itertools import groupby

file = ["meta_data_02154.csv", "meta_data_021694.csv", "meta_data_loop_02365.csv", "meta_data_loops_0256365.csv", "output.csv"]

f = [list(i) for j, i in groupby(file, lambda a : re.split(r'\d*.csv$', a)[0])]
print(f)

for pattern in f:
    #print(pattern)
    print((re.split(r'_?\d*.csv$', pattern[0]))[0])

您可以使用print((re.split(r'\\d*.csv$', pattern[0]))[0].rstrip('_')但也可以使用更好的正則表達式和.search代替split

我不確定您使用groupby的目的。

import re

file = ["meta_data_02154.csv", "meta_data_021694.csv", "meta_data_loop_02365.csv", "meta_data_loops_0256365.csv", "output.csv"]

for pattern in file:
    print(re.search(r'(.+)\d*.csv$', pattern).group(1))

輸出

meta_data_02154
meta_data_021694
meta_data_loop_02365
meta_data_loops_0256365
output

您可以使用單線,僅拆分文件名:

file = ["meta_data_02154.csv", "meta_data_021694.csv", "meta_data_loop_02365.csv", "meta_data_loops_0256365.csv", "output.csv"]
filePatterns = set([f.rsplit('_', 1)[0].rsplit('.csv')[0] for f in file])
print(filePatterns)

打印:

{'meta_data_loops', 'meta_data', 'meta_data_loop', 'output'}

暫無
暫無

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

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