# -*- 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=எண்ணிக்கை போன்ற துறைச்சொல் ஆக்கங்களைப் பட்டியிலட வேண்டும்.