ekspresi reguler dalam string panda (split)
Oct 28 2020
Halo, saya memiliki string seperti:
liste_to_split=['NW_011625257.1_0','scaffold1_3','scaffold3']
dan saya ingin membaginya saat Number_Numbersaya mencoba:
for i in liste_to_split:
i.split(r'(?<=[0-9])_')
dan saya dapat
['NW_011625257.1_0']
['scaffold1_3']
['scaffold3']
dari pada
['NW_011625257.1'] ['0']
['scaffold1'] ['3']
['scaffold3']
apakah seseorang tahu di mana masalahnya?
Jawaban
1 anubhava Oct 28 2020 at 17:27
Anda dapat menggunakan:
>>> 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']
Perhatikan penggunaan re.splitalih - alih string.splitdan gunakan _pernyataan lookbehind luar untuk memastikan kita tidak memisahkan pada kecocokan lebar nol.
Berdasarkan komentar OP di bawah ini, sepertinya OP ingin melakukan pemisahan ini untuk sebuah dataframekolom. Dalam kasus itu gunakan:
Dengan asumsi ini adalah kerangka data Anda:
>>> print (df)
column
0 NW_011625257.1_0
1 scaffold1_3
2 scaffold3
Kemudian Anda dapat menggunakan:
>>> 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)
keluaran
['NW', '011625257.1', '0']
['scaffold1', '3']
['scaffold3']
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'