Postingan lainnya
manipulasi string di python
Dengan output yang sama, saya bingung bagaimana manipulasi string dengan cara yang kedua? Terimakasih
#step 1
text0 = 'Hi {name}, welcome to my {page}';
print(text0.format(name='xxx', page='first page'))
#output = Hi xxx, welcome to my first page
#step 2
text = 'Hi [name], welcome to my [page]';
data = {'name': 'xxx', 'page': 'first page'}
def render(data, text):
for x in text:
if x == "[name]":
result += data[0];
elif x == "[page]":
result += data[1];
else:
result += x;
return result
print(render(data, text))
#output = Hi xxx, welcome to my first page
Tanggapan
bisa diperjelas pertanyaanya? sekarang cara kedua tidak berhasil? atau apa maksudnya yang ditanyakan?
1 Jawaban:
<div>Saat string dimasukkan ke dalam for loop, maka for loop akan memeriksa karakter per karakter dari string tersebut. Yang saya pahami tujuan dari fungsi render adalah untuk menggantikan placeholder di dalam variabel 'text'. Sayangnya hal ini tidak bisa dilakukan dengan memakai for loop, karena penggunaan placeholder dalam string formatting yang memakai string.format() itu ketat. <br><br>Jika ingin memakai fungsi sebenarnya bisa dilakukan, tapi kemungkinannya kode yang dihasilkan terlalu hard coded. <br><br></div><pre>text = 'Hi {name}, welcome to my {page}' data = {'name': 'xxx', 'page': 'first page'}
def render(text, data): # Penggunaan string.format() result = text.format(name = data['name'], page = data['page']) print(result)</pre><div><br>Cara lain yang lebih ringkas adalah dengan memanfaatkan f-string:<br><br></div><pre>new_text = f"Hi {data['name']}, welcome to my {data['page']}"
Karena 'data' adalah dictionary, bisa kita tarik langsung nilainya dengan cara data['nama_key']
print(new_text)