Reputation: 879
I'm looking for a commande in python in order to only keep within a list the 3 first letters
between content_content > con_con
here is an example:
list_exp=["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
list_exp=["Bab_exp","Ocr_mac","Oje_mul"]
Does anyone have an idea? Thank you for your help .
Upvotes: 2
Views: 69
Reputation: 8730
You can try like this.
Before running all these, just have a quick look at the use of
list comprehension
&join()
,split()
methods defined on strings.
>>> list_exp = ["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
>>>
>>> output = ['_'.join([part[:3] for part in name.split("_")]) for name in list_exp]
>>> output
['Bab_exp', 'Ocr_mac', 'Oje_mul']
>>>
Upvotes: 1
Reputation: 23
[
*map(
lambda strip:'_'.join([st[:3] for st in strip]),
[
*map(
lambda s:s.split('_'),
["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
)
]
)
]
mess explanation:
First we are splitting every string in list by '_' gigving us
[['Babylona', 'expetiendra'], ['Ocracylus', 'machabrus'], ['Ojeris', 'multifasciatus']]
Then we are getting first 3 letters using [:3] for every string inside new lists
Finnaly joining again with '_'.join()
['Bab_exp', 'Ocr_mac', 'Oje_mul']
This example using map unpacking and lamdas
Upvotes: 1
Reputation: 26047
You can use a list-comprehension:
['_'.join(map(lambda x: x[:3], x.split('_'))) for x in list_exp]
Code:
list_exp=["Babylona_expetiendra","Ocracylus_machabrus","Ojeris_multifasciatus"]
print(['_'.join(map(lambda x: x[:3], x.split('_'))) for x in list_exp])
# ['Bab_exp', 'Ocr_mac', 'Oje_mul']
Upvotes: 4