Skip to content

Instantly share code, notes, and snippets.

@ihfazhillah
Created May 14, 2016 12:06
Show Gist options
  • Save ihfazhillah/3a9e64478ca9947b2068f93284bef682 to your computer and use it in GitHub Desktop.
Save ihfazhillah/3a9e64478ca9947b2068f93284bef682 to your computer and use it in GitHub Desktop.
parse multiline text untuk dijadikan pasangan katakunci dan value
"""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