We define the problem to ask AI to generate python code. This is the crucial part, to get output that we expected.
In Indonesia language we define:
saya punya data excel di sheet1 yang berisi nama.
headet sheet1 adalah no dan nama komposit.
nama komposit terdiri dari 2 nama dipisah dengan tanda /.
tidak semua nama komposit memiliki 2 nama.
nama pertama ada yang menggunakan nama panggilan yang disimpan didalam tanda ().
nama pertama selalu ada disetiap row.
sayang ingin mengambil 3 huruf terakhir dari nama pertama, bukan yang berada dalam tanda kurung.
buatkan kode pyhton3 dengan openpyxl library.
print no, nama, dan 3 huruf terakhir, gunakan ; untuk pemisah dan masukan string kedalam "" agar output mudah di simpan kedalam csv.
In English language we define:
I have Excel data in sheet 1 containing names.
The header of sheet 1 is a composite number and name.
A composite name consists of two names separated by a / symbol.
Not all composite names have two names.
Some first names use nicknames stored within the () symbol.
The first name is always present in every row.
Unfortunately, I want to extract the last three letters of the first name, not the ones in parentheses.
Create a Python 3 code using the OpenPyXL library.
Print the number, name, and last three letters, use ; as the separator, and enclose the string in "" to make the output easy to save to a CSV.
Choose one of them, feed it into chat.openai.com / chatgpt.com and gemini.google.com, you can use 2 tab or 2 window browser. This is only example, you need to define your expected output.
I replace xlsx file name "data_tr.xlsx"
Here is the code generated by chatgpt.com:
from openpyxl import load_workbook
import re
# Mengambil nama pertama dari "nama komposit" (sebelum tanda /)
# Menghapus bagian dalam tanda kurung () dari nama pertama
# Mengambil 3 huruf terakhir dari nama pertama yang telah dibersihkan
# Ganti dengan path ke file Excel kamu
file_path = "data_tr.xlsx"
# Load workbook dan sheet
wb = load_workbook(filename=file_path)
ws = wb["Sheet1"]
# Print header
print('"no";"nama komposit";"3 huruf terakhir"')
# Proses tiap baris (mulai dari baris ke-2 karena baris 1 adalah header)
for row in ws.iter_rows(min_row=2, max_col=2):
no = row[0].value
nama_komposit = str(row[1].value).strip() if row[1].value else ""
# Ambil nama pertama dari nama komposit
nama_pertama = nama_komposit.split("/")[0].strip()
# Hapus isi dalam tanda kurung, misalnya (Budi)
nama_pertama_bersih = re.sub(r"\([^)]*\)", "", nama_pertama).strip()
# Ambil 3 huruf terakhir (jika cukup panjang)
tiga_huruf_terakhir = nama_pertama_bersih[-3:] if len(nama_pertama_bersih) >= 3 else nama_pertama_bersih
# Format dan cetak hasil
print(f'"{no}";"{nama_komposit}";"{tiga_huruf_terakhir}"')
Here is the code generated by gemini:
import openpyxl
# Ganti 'nama_file_anda.xlsx' dengan nama file Excel Anda
file_path = 'data_tr.xlsx'
try:
# Membuka workbook dan memilih sheet aktif
workbook = openpyxl.load_workbook(file_path)
sheet = workbook.active
# Mencetak header
header_string = '"No";"Nama Komposit";"3 Huruf Terakhir"'
print(header_string)
# Iterasi dari baris ke-2 (mengabaikan header yang sudah dicetak)
for row in sheet.iter_rows(min_row=2):
no_cell = row[0]
nama_komposit_cell = row[1]
# Mengabaikan baris kosong
if not no_cell.value or not nama_komposit_cell.value:
continue
# Mengambil nilai dari cell
no = no_cell.value
nama_komposit = str(nama_komposit_cell.value)
# Memisahkan nama komposit berdasarkan '/'
nama_pertama = nama_komposit.split('/')[0].strip()
# Menghapus nama panggilan dalam kurung
if '(' in nama_pertama and ')' in nama_pertama:
idx_buka = nama_pertama.find('(')
nama_pertama = nama_pertama[:idx_buka].strip()
# Mengambil 3 huruf terakhir dari nama pertama dan mengubahnya menjadi huruf kapital
tiga_huruf_terakhir = nama_pertama[-3:].upper()
# Mencetak data sesuai format yang diminta
output_string = f'"{no}";"{nama_komposit}";"{tiga_huruf_terakhir}"'
print(output_string)
except FileNotFoundError:
print(f"Error: File '{file_path}' tidak ditemukan. Pastikan nama file sudah benar.")
except Exception as e:
print(f"Terjadi kesalahan: {e}")
The code contain Indonesia Languge when the chat feed in Indonesia Language.
If you use virtual environment, activate it first
$ cd mypyenv
~/mypyenv$ source venv/bin/activate
Remember, AI may make mistake the output was generated base on statistics values from every tokens. You must check the output. You may seen the output style has deference based on data the AI developer feed during learning.
This is the way AI help to create source code that we never learn before.