स्ट्रिंग पंडों (विभाजन) में regex
Oct 28 2020
नमस्कार मेरे पास एक तार है जैसे:
liste_to_split=['NW_011625257.1_0','scaffold1_3','scaffold3']
और मैं उन्हें Number_Numberकोशिश करने पर विभाजित करना चाहूंगा :
for i in liste_to_split:
i.split(r'(?<=[0-9])_')
और मुझे मिल गया
['NW_011625257.1_0']
['scaffold1_3']
['scaffold3']
के बजाय
['NW_011625257.1'] ['0']
['scaffold1'] ['3']
['scaffold3']
किसी को पता है कि मुद्दा कहां है?
जवाब
1 anubhava Oct 28 2020 at 17:27
आप इस्तेमाल कर सकते हैं:
>>> import re
>>> liste_to_split=['NW_011625257.1_0','scaffold1_3','scaffold3']
>>>
>>> for i in liste_to_split:
... re.split(r'(?<=[0-9])_', i)
...
['NW_011625257.1', '0']
['scaffold1', '3']
['scaffold3']
यह सुनिश्चित करने के लिए कि हम एक शून्य चौड़ाई मैच पर बंटवारा नहीं कर रहे हैं, के re.splitबजाय बाहर string.splitका उपयोग करें और _जोर का उपयोग कर के ध्यान दें ।
नीचे ओपी की टिप्पणी के आधार पर ऐसा लगता है कि ओपी एक dataframeकॉलम के लिए यह विभाजन करना चाहता है । उस मामले में उपयोग करें:
यह मानते हुए कि आपका डेटाफ्रेम है:
>>> print (df)
column
0 NW_011625257.1_0
1 scaffold1_3
2 scaffold3
तो आप का उपयोग कर सकते हैं:
>>> print (df['column'].str.split(r'(?<=[0-9])_', expand=True))
0 1
0 NW_011625257.1 0
1 scaffold1 3
2 scaffold3 None
1 Noname Oct 28 2020 at 17:39
l=['NW_011625257.1_0','scaffold1_3','scaffold3']
for i in l:
f = i.split('_')
print(f)
उत्पादन
['NW', '011625257.1', '0']
['scaffold1', '3']
['scaffold3']