Created
May 14, 2016 12:06
-
-
Save ihfazhillah/3a9e64478ca9947b2068f93284bef682 to your computer and use it in GitHub Desktop.
parse multiline text untuk dijadikan pasangan katakunci dan value
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""Hi, ini adalah code snippet tentang parsing multiple line text | |
biasanya dipakai untuk file file konfigurasi. | |
Berikut adalah sample_text yang saya ingin buat spt ini: | |
{'COBA': 'sedang ini adalah coba\ncoba lagi\ncoba lagi', | |
'INITIAL': 'ini adalah initial\ndan ini adalah kalimat\njuga ini'} | |
dari: sample_text dibawah ini, | |
semoga bermanfaat, dan saya tidak bingung lagi.....""" | |
sample_text = """####INITIAL#### | |
ini adalah initial | |
dan ini adalah kalimat | |
juga ini | |
####COBA#### | |
sedang ini adalah coba | |
coba lagi | |
coba lagi""" | |
print(sample_text) | |
print("*"*20) | |
splitted = sample_text.split("\n") | |
# pertama, kita cari key dan posisinya terlebih dahulu | |
keys = [] | |
for index, text in enumerate(splitted): | |
if text.startswith("####"): | |
keys.append((text.replace("####", "").strip(), index)) | |
# adapun ini, kita mencari value dari key dan kemudian kita join untuk | |
# jadi multiple line | |
couple = dict() | |
for ind, key in enumerate(keys): | |
k, i = key # ini index dan key yang kita ambil di for-loop diatas | |
val = list() | |
for index, text in enumerate(splitted): # looping ke multiple line text td | |
try: | |
# lines antara val index ini dan index selanjutnya | |
if index > i and index < keys[ind + 1][1]: | |
val.append(text) | |
# kita sudah sampai di akhir, jadi tidak ada plus satu lagi | |
except IndexError: | |
if index > i: | |
val.append(text) | |
couple[k] = "\n".join(val) | |
print(couple) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment