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และใช้การ_ยืนยันรูปลักษณ์ภายนอกเพื่อให้แน่ใจว่าเราไม่ได้แบ่งความกว้างเป็นศูนย์
จากความคิดเห็นของ OP ด้านล่างดูเหมือนว่า OP ต้องการแยก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']