உள்ளடக்கத்துக்குச் செல்

விக்கிமூலம்:பைத்தானில் அணித்தரவுக்கோப்பு

விக்கிமூலம் இலிருந்து
# -*- coding: utf-8 -*- நாம் பெரும்பாலும் ஒருங்குறியாக்கத்தினையே பயன்படுத்துவோம். சில நேரங்களில் மேலும் சில குறியாக்கங்களைக் கையாளும் போது, புரிந்து கொள்ள இக்குறிப்பு அவசியம்.
#!/usr/bin/python3 உங்கள் லினக்சு கணினியெனில் இதுவே அடிக்கட்டகம் இருக்கும் இடம். பிற இயக்குதளங்களில் மாற வாய்ப்புண்டு.
import csv, os, sys, shutil, pathlib, subprocess, re, time

# மூலக்கோப்பு : விரிதாளின் ஐந்து columns உள்ளன. விவரம் :  
# நமக்கு அளிக்கப்பட்ட விரிதாள் கோப்பினை,  அணித்தரவுக்கோப்பாக மாற்றிக் கொண்டேன். காண்க: https://commons.wikimedia.org/w/index.php?title=File%3ATutorial-tamil-creation-csv-.webm

விளைவிடு = print
உள்ளீட்டுக்கோப்பு  = 'அணித்தரவுக்கோப்புத்தரவுகள்.csv'#'1-wikt-all-222186.csv'#   மறவாமல், இக்கோப்பின்முதல்வரியைத் தேவையில்லையெனில்  நீக்கிவிடவும்.
விளைவிடு('நிரலால் மாற்றமாகவுள்ள, விக்கி மூலக்கோப்பு = ' + உள்ளீட்டுக்கோப்பு + '\n')

#இதன் கீழுள்ள வரிகள், மூலக்கோப்பில் வெற்றுவரிகளைக் கண்டறிகிறது. பிறகு, மொத்த வரியெண்ணிக்கையைத்தரும்.	
with open(உள்ளீட்டுக்கோப்பு) as உள்ளீட்டுக்கோப்பு:
	படித்தல் = csv.reader(உள்ளீட்டுக்கோப்பு, delimiter='~',)
	உள்ளீட்டுக்கோப்புப்பட்டி = list(படித்தல்)
	def பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி):
		return sum(type(el)== type([]) for el in உள்ளீட்டுக்கோப்புப்பட்டி)
	உள்ளீட்டுக்கோப்புப்பட்டி2 = filter(None, உள்ளீட்டுக்கோப்புப்பட்டி)
	உள்ளீட்டுக்கோப்புப்பட்டி3 = list(உள்ளீட்டுக்கோப்புப்பட்டி2)
	def பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3):
		return sum(type(el)== type([]) for el in உள்ளீட்டுக்கோப்புப்பட்டி3)
		
#வெற்றுவரிகள் நீக்கியத் தரவினைப்படிகிறேன்.
விளைவிடு(' இக்கோப்பிலுள்ள வெற்று வரிகளை நீக்கியபின், தரவுகளை மாற்றங்களுக்கு எடுக்கிறேன் ...\n')
விளைவிடு('   விரிதாளின் columnA, B, C, D, E என்பவை எடுத்துக்கொள்ளப்படுகின்றன ...\n')
for a_lineNum_clean,a_line_clean in enumerate(உள்ளீட்டுக்கோப்புப்பட்டி3):	
	#subprocess.call("sed -i `` 1d 1-test-input.csv",shell=True)
	#a_line_clean2= a_line_clean[1:]	# தரவிலுள்ள, cloumnA என்ற வரிசையெண்ணை நீக்குகிறேன்.
	உள்ளீட்டுக்கோப்புப்பட்டி3_strip = [item.strip() for item in a_line_clean] # ஒவ்வொரு வரியின் columnB,C,D ஆகியவற்றை strip செய்கிறேன்.
	உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join = str(a_lineNum_clean+1) + '. ' + str(உள்ளீட்டுக்கோப்புப்பட்டி3_strip) 
	உள்ளீட்டுக்கோப்புப்பட்டி3_strip_len = len(உள்ளீட்டுக்கோப்புப்பட்டி3_strip)

	if உள்ளீட்டுக்கோப்புப்பட்டி3_strip_len != 5 :
		விளைவிடு('   ' + 'ஏதே ஒரு column இல்லை.' + உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join) 
		time.sleep(3)
		with open('output_columnNo.csv', 'a') as wiki_file:
			
			உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join_clean = உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join.replace("['","~").replace("]'","").replace("']","").replace("',","~").replace("~ '","~").replace(" ~","~")
			output_writing = wiki_file.write(உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join_clean + '\n')
	elif உள்ளீட்டுக்கோப்புப்பட்டி3_strip_len == 3 :
		#விளைவிடு('   ' + உள்ளீட்டுக்கோப்புப்பட்டி3_strip_join)
		time.sleep(1)

		columnB = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[0] # விரிதாளிலுள்ள சொல்வகை/துறைவகை
		columnC = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[1] # விரிதாளிலுள்ள ஆங்கிலச்சொல்/தலைப்புச்சொல்
		columnD = உள்ளீட்டுக்கோப்புப்பட்டி3_strip[2] # விரிதாளிலுள்ள தமிழ் மொழிபெயர்ப்புகள்  
		விளைவிடு(str(a_lineNum_clean+1) + '. ' + columnB + '~'+ columnC + '~' + columnD)

# முனையத்தில் இறுதியாக தெரிவதற்காக , கீழுள்ள வரியெண்ணிக்கைகளைத் தருகிறேன்.			
emptyNum = பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி)-பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3)
விளைவிடு('\n   இக்கோப்பிலுள்ள வெற்று வரிகளின் எண்ணிக்கை  =  ' + str(emptyNum))
விளைவிடு('   இக்கோப்பிலுள்ள தரவுள்ள வரிகளின் எண்ணிக்கை = ' + str(பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி3)))
விளைவிடு('   இக்கோப்பிலுள்ள மொத்த சொல்வரியெண்ணிக்கை = ' + str(பட்டியெண்ணிக்கை(உள்ளீட்டுக்கோப்புப்பட்டி)))


#===	 செய்ய வேண்டியன ===
# விக்சனரிக்காக ஆங்கிலத்தலைப்புச்சொல்லினை அடிப்படையாகக் கொண்டு, ஆங்கிலக்கூட்டுச்சொற்கள், குறிசொற்கள் பகுப்புகளை தனிக்கோப்பில் எழுதணும்.
# கோப்பிடம் சரியா என்பதற்கு  நூற்கட்டகமான pathlib (from py3.4) என்பது, os நூற்கட்டகத்தில்எவ்வாறு வேறுபடுகிறது என்பதை ஆய வேண்டும். அதே போல enumerate கொண்டு எளிமையாக்க வேண்டும்.
# விக்கிநூலில் list=பட்டி, string/str=சரம், integer/int=எண், len=எண்ணிக்கை போன்ற துறைச்சொல் ஆக்கங்களைப் பட்டியிலட வேண்டும்.