Excel’deki Ürün Listesini Otomatik Olarak YAML Formatına Dönüştürme

Elimde barkod numarası, ürün adı ve fiyat bilgilerini içeren bir Excel dosyası vardı ve bu verileri belirli bir YAML formatına dönüştürmek istedim. Ancak, verilerde gereksiz boşluklar ve fiyat formatında küçük değişiklikler yapmam gerekiyordu. Python kullanarak bu işlemi otomatikleştirdim ve aşağıda kullandığım çözümü paylaşıyorum.

YAML formatı örneği:

- Name: Test Ürünü
  GroupCode: Market
  Barcode: "12345"
  Portions:
  - Name: Normal
    Price: 6,5

İstediğim gereksinimler:

  1. Ürün isimleri ve barkodlarda başta ve sonda yer alan gereksiz boşlukların silinmesi.
  2. Fiyatın 6.5 yerine 6,5 olacak şekilde nokta yerine virgülle yazılması.
  3. Excel’deki her satırın yukarıdaki YAML formatına dönüştürülmesi.

Çözüm Kodu:

import pandas as pd
import yaml

# Excel dosyasını oku
excel_path = "urunler.xlsx"  # Dosya yolunu buraya yazın
df = pd.read_excel(excel_path)

# Her satırı YAML formatına dönüştür
yaml_data = []
for index, row in df.iterrows():
    product = {
        "Name": row["Ürün Adı"].strip(),  # Boşlukları kaldır
        "GroupCode": "Market",
        "Barcode": str(row["Barkod Numarası"]).strip(),  # Boşlukları kaldır
        "Portions": [
            {
                "Name": "Normal",
                "Price": str(row["Fiyat"]).replace('.', ',')  # Noktayı virgülle değiştir
            }
        ]
    }
    yaml_data.append(product)

# YAML çıktısını dosyaya yaz
with open("urunler.yaml", "w", encoding="utf-8") as yaml_file:
    yaml.dump(yaml_data, yaml_file, allow_unicode=True, sort_keys=False)

print("YAML dosyası başarıyla oluşturuldu!")

Sonuç:
Bu kod sayesinde Excel’deki her satır otomatik olarak istediğim YAML formatına dönüştürüldü. Gereksiz boşluklar temizlendi ve fiyatlar virgüllü formata uygun hale getirildi. Aynı problemle karşılaşanlar için faydalı olacağını umuyorum.

Sorusu veya önerisi olan varsa memnuniyetle yanıtlarım! :slight_smile:

1 Beğeni

Faydalı bir paylaşım olmuş Cenk bey teşekkürler.
Ayrıca aşağıdaki gibi bir çözüm de mevcut, opsiyonel olarak paylaşayım.
Direkt Excel formül çubuğuna yapıştırarak sonuç sütununu kopyalarak kullanabilirsiniz.

=BİRLEŞTİR("- Name: "; B1; DAMGA(10); "  GroupCode: "; E1; DAMGA(10); "  Barcode: "; A1; DAMGA(10); "  Portions: "; DAMGA(10); "  - Name: Normal"; DAMGA(10); "    Price: "; D1)

1 Beğeni

Evet buda gayet kolay ve iyi çözüm olmuş formül yazarak yapmak aklıma gelmemişti oldukça mantıklı :)