Dört farklı sütuna sahip çok büyük bir dosyam var. Sütunlardan birinde 'AB', 'BC', 'CA' ve benzeri kodlar bulunur. Her kod için ayrı bir dosya oluşturmak istiyorum. Dört alanın tümünü içeren ancak yalnızca 'AB' kod alanı olan örnek file_AB. Bu konuda yeniyim, ancak mümkünse python kullanarak yapmak isterim. with open("C:/Users/Desktop/JesseData/fileread.txt") as f1: with open("C:/Users/Desktop/JesseData/fileout.txt") as f2: for line in f1: if fourth_attribute == 'CA': f2.write(line)
Dosya içeriğinde bulunan kodlara göre ayrı dosya yazma - python
cevap
Sana bunu yapmak için tam bir kod verecek, ama burada bir başlangıç değilim:
Adım 1: Dosya çok büyük olursa Oku dosyayı
, istediğiniz olacak parçaları içinde okumak için. Bunu yapmak için, her yığınta okuduğunuz bir dizi satırı takip edebilir ve ardından bu yineleyici bir limite ulaştığında, verileri ayrı dosyalarınıza dökün. Bir şey gibi:
with open("raw_data.txt", 'r') as f:
i = 0
data = []
for line if f:
data.append(line) #do some formatting here
i += 1
if i >= THRESHOLD:
data_dump(data)
data = []
i = 0
Bu şekilde, tek seferde bellekte dosyanın tamamını sahip önler.
Adım 2: Grup verileriniz data_dump
fonksiyonunda
itertools.groupby()
ile en kolay şekilde gerçekleştirilebilir. Bu işlev yinelenebilir ve bir anahtar alır, ardından gruplara ayrılmış bir yineleyici döndürür.
groupby()
Sıralanmış veri setini bekliyor
groups = itertools.groupby(data, key = lambda x: x[0])
Not olduğunu, bu nedenle: Her satır bu satırdaki değerlerle listesidir, ve anahtar ilk giriş olduğu veri biçimlendirilir ederse, gruplama şeklinde görünebilir verileri aynı tuş işleviyle sıralamaya ihtiyaç duyacaktır. Aşağıda groupby
>>> lst = [[1, 2,3],[1,4,5],[2,45,65]]
>>> import itertools
>>> groups = itertools.groupby(lst, key = lambda x: x[0])
>>>
>>> for g in groups:
... print g[0], list(g[1])
...
1 [[1, 2, 3], [1, 4, 5]]
2 [[2, 45, 65]]
3. Adım basit bir örneğidir: Verileri
yazın veri gruplandırılmış sonra, can sadece grupları aracılığıyla döngü ve karşılık gelen çıkış dosyasına veri ekle. Ben dosyanın bir sözlük tutulması tavsiye ediyorum kolları:
d = {"AB": open("AB.txt", 'a'), "BC", ....}
senin döngüler arasında durmadan size döngü
Bu kadar detaylı bir açıklama için çok teşekkür ederim. Dosyam bir liste değil, ";" ile ayrılan öznitelikleri içerir. Yani, sınırlayıcı kullanarak grup olabilir bir yolu var. – yatri
- 1. Dosya adlarının dosya adının uzunluğuna göre sıralanması
- 2. php yazma dosya
- 3. Dosya Okuma/Yazma
- 4. Torçta Dosya İçerisine Yazma
- 5. Toplu Dosya olay izleyiciye yazma
- 6. StreamReader akışından bir dosya yazma
- 7. SqlDataReader'dan Birden Çok Dosya Yazma
- 8. node.js dosya yazma Burada rastgele
- 9. , ancak dosya içeriğine göre
- 10. Python hatası katıştırma Dosya adına göre içe aktarma desteklenmiyor
- 11. Kapsanan ExecutionContext içeriğinde bulunan nesneler/yöntemler deneniyor
- 12. Bulunan dosya sayısı ve ilerleme durumu
- 13. Atomik dosya yazma işlemleri (çapraz platform)
- 14. Python unittest kullanarak dosya yazma fonksiyonlarının birim testi nasıl yapılır
- 15. bir sınıf yolunda ben dosya içeriğinde okumaya çalışıyorum
- 16. Okuma ve Üzerine Yazma .CSV dosya verileri
- 17. Birden çok dosya için eşzamanlı yazma
- 18. bir dosya Python
- 19. Python kullanarak dosya işleme
- 20. Python dosya işlemleri
- 21. cx_freeze python tek dosya?
- 22. Python Dosya Slurp
- 23. Python ile dosya açma
- 24. Python dosya eki hatası
- 25. Python: Dosya kilitlendi
- 26. Eşzamanlı yazma bittikten önce dosya okuma düğümü
- 27. Yazma ve okuma için Perl dosya işleyicisi
- 28. Yazma dosya özniteliklerini artırır örnek örneği
- 29. Göreli dosya sistemi Modül içindeki yazma yolu
- 30. Windows/Linux'ta dosya yazma izinlerini kontrol edin
Neden bir deneyin ve yazı vermeyin kolayca doğru dosyaya yazabilir Bu şekilde bazı kod? – Francesco