I have written one python code in which final output is coming with '_' symbol. So i want to remove this symbol.
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])
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
Desire 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
use 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('_'))
Use rstrip()
val = "sad_"
print(val.rstrip('_'))
Output: sad
Description
rstip()
Returns a copy of the string with right trailing characters removed.
Alternatively print(val[:-1])
will give same result in this case.
Try pattern r'_?\\d*.csv$'
.
Ex:
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])
You may use print((re.split(r'\\d*.csv$', pattern[0]))[0].rstrip('_')
but you might as well use a better regex and .search
instead of split
.
I'm not sure what you used groupby
for.
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))
Outputs
meta_data_02154
meta_data_021694
meta_data_loop_02365
meta_data_loops_0256365
output
You could use a one-liner, just splitting the filenames:
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)
Prints:
{'meta_data_loops', 'meta_data', 'meta_data_loop', 'output'}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.