Dize normalizasyonu

Java'da Veri Temizleme

Dennis Lee

Software Engineer

Manav stok veri seti

  • Bölüm boyunca bir manav stok veri setiyle çalışın
  • Veri dönüşümlerini göstermek için ürün adı gibi bazı sütunları değiştirin

 

Ürün Adı Kategori Durum Alım Tarihi Miktar
Eggplant Meyve & Sebze Kaldırıldı 3/1/25 46
VEGETABLE OIL Yağlar & Katı Yağlar Gecikmeli 4/1/25 51
Cheese Süt Ürünleri Aktif 6/1/25 78
Fresh (Organic) *Carrots* Meyve & Sebze Kaldırıldı 5/1/25 51
Bell Pepper Fresh Meyve & Sebze Aktif 5/2/25 67
Java'da Veri Temizleme

Dize normalizasyonu neden önemlidir

  • Dağınık dizeler: bilgisayarlar metni tanıyamaz
  • Örnek: market stokları
  • Çözüm: dizeleri normalize et

 

String[] messyProducts = {
    "Eggplant ",              // Sonda fazladan boşluk
    "VEGETABLE OIL",             // Tutarsız harf durumu
    "Fresh (Organic) *Carrots*", // Özel karakterler
    "Bell   Pepper    Fresh",    // Sözcükler arasında fazla boşluk
};
Java'da Veri Temizleme

Baştaki ve sondaki boşlukları kaldırma

String[] products = {"Eggplant ", "  Vegetable Oil", " Cheese "};
for (String product : products) {
    String cleaned = product.trim(); // Baştaki/sondaki boşlukları kaldırır
    System.out.println(cleaned);
}
Eggplant
Vegetable Oil
Cheese
Java'da Veri Temizleme

Harf durusunu standartlaştırma

List<String> products = Arrays.asList("Eggplant", "VEGETABLE OIL", "cheese");

products.stream()
.map(String::toLowerCase) // Tümünü küçük harfe çevir
.forEach(System.out::println); // Her ürünü yazdır
eggplant
vegetable oil
cheese
Java'da Veri Temizleme

Regex kalıpları

  • Düzenli ifadeler (regex): metni eşleyen özel kalıplar$^1$
  • [^a-zA-Z\\s]: Harf veya boşluk olmayan karakterleri bulur
// Bu desen ŞUNLAR OLMAYAN karakterleri eşler:
[       // Karakter kümesi başlangıcı
^       // DEĞİL - bu kümede olmayanı eşle
 a-z     // küçük harf
 A-Z     // büyük harf
 \\s     // boşluk karakteri (Java'nın \\s'i yorumlaması için ekstra \\ gerekir)
]       // Karakter kümesi sonu

1 https://www.datacamp.com/cheat-sheet/regular-expresso
Java'da Veri Temizleme

Özel karakterleri temizleme

String dirtyName = "Fresh (Organic) *Carrots*"; // Özel karakterler: (, ), *

String cleaned = dirtyName.replaceAll("[^a-zA-Z\\s]", ""); // Harf dışını kaldır
System.out.println(cleaned); // Çıktı: "Fresh Organic Carrots"
Fresh Organic Carrots
Java'da Veri Temizleme

Birden çok boşluğu temizleme

import java.util.regex.Pattern;
Pattern pattern = Pattern.compile("\\s+"); // Birden çok boşluğu eşleştir

String messyProduct = "Bell Pepper Fresh"; // Fazladan boşluk var // Birden çok boşluğu tek boşlukla değiştir String cleanedProduct = pattern.matcher(messyProduct).replaceAll(" ");
System.out.println(cleanedProduct);
Bell Pepper Fresh
Java'da Veri Temizleme

Hepsini bir araya getirme

List<String> messyProducts = Arrays.asList(
        "Eggplant ", "VEGETABLE OIL",
        "Fresh (Organic) *Carrots*", "Bell   Pepper    Fresh"
); // Manav stok veri setinden çıkarılan ürün adları

messyProducts.stream()
        .map(s -> s.trim()                       // Dış boşlukları düzelt
                .replaceAll("[^a-zA-Z\\s]", "")  // Özel karakterleri kaldır
                .replaceAll("\\s+", " ")         // İç boşlukları düzelt
                .toLowerCase())                  // Harf durumunu standartlaştır
        .forEach(System.out::println);
Java'da Veri Temizleme

Hepsini bir araya getirme: çıktılar

eggplant
vegetable oil
fresh organic carrots
bell pepper fresh
Java'da Veri Temizleme

Haydi pratik yapalım!

Java'da Veri Temizleme

Preparing Video For Download...