TSV

TSV फ़ाइल क्या होती है?

CSV जैसा ही, पर टैब से बँटा हुआ — जिससे किसी फ़ील्ड के भीतर अल्पविराम वाली दिक़्क़त खड़ी ही नहीं होती।

TSV है क्या

TSV एक सादा टेक्स्ट फ़ॉर्मेट है, जो किसी भी एडिटर में खुल जाता है। इसका इस्तेमाल प्रोग्रामों के बीच डेटा ले जाना के लिए होता है।

एक्सटेंशन .tsv है और पूरा नाम Tab-Separated Values। दोनों उतना नहीं बताते जितना यह कि फ़ाइल अंदर क्या-क्या रख सकती है — और इस पन्ने का बाक़ी हिस्सा इसी के बारे में है।

TSV आया कहाँ से

यह 1993 तक पीछे जाता है। विनिर्देश IANA text/tab-separated-values है।

जो फ़ॉर्मेट इतने लंबे समय तक पढ़ा जाता रहा हो, उसे वह चीज़ सौंपी जा सकती है जो आपको दस साल बाद वापस चाहिए।

विनिर्देश सार्वजनिक है

यह पूरा प्रकाशित है, इसलिए कोई भी इसे देखकर अंदाज़ा लगाने के बजाय दस्तावेज़ पढ़कर लागू कर सकता है। यही वजह है कि यह फ़ॉर्मेट इतने सारे प्रोग्रामों में मिलता है, और यही वजह है कि बीस साल पहले लिखी गई फ़ाइलें आज भी खुल जाती हैं। पर विनिर्देश का प्रकाशित होना और उसका रॉयल्टी-मुक्त होना एक बात नहीं है: जहाँ फ़ॉर्मेट किसी कोडेक को अपने अंदर लपेटता है, वहाँ पेटेंट का लाइसेंस एक अलग सवाल है, और मानक उसका जवाब नहीं देता।

कुछ भी फेंका नहीं जाता

TSV फ़ाइल अपना अंदरूनी हिस्सा हूबहू सहेजती है। दोबारा सहेजने से कुछ नहीं बदलता, इसलिए इसे जितनी बार चाहें खोलिए, बदलिए और फिर से सहेजिए — नुक़सान जमा नहीं होता। यही बात इसे सौंपने का नहीं, काम करने का फ़ॉर्मेट बनाती है।

टिप्पणी छोड़ने की कोई जगह नहीं

TSV फ़ाइल में टिप्पणी लिखने का कोई तरीक़ा नहीं है। समझाने वाली हर बात फ़ाइल के बाहर रहनी पड़ेगी — इसे ऐसे किसी काम के लिए चुनने से पहले यह जान लेना चाहिए जिसे कोई इंसान हाथ से सँभालेगा।

TSV को खोलता कौन है

Microsoft Excel, LibreOffice Calc और pandas इसे पढ़ते हैं, और इसी तरह के ज़्यादातर दूसरे प्रोग्राम भी।

फ़ाइल न खुले तो कसूर फ़ॉर्मेट का शायद ही कभी होता है — अक्सर प्रोग्राम ही फ़ॉर्मेट से पुराना होता है। किसी पुरानी चीज़ में बदल लेना इससे निकलने का भरोसेमंद रास्ता है, और इस वेबसाइट का बाक़ी हिस्सा इसी के लिए है।

इसे ब्राउज़र में खोलना

इसे कोई भी ब्राउज़र नहीं पढ़ता।

इसे बदलने की सबसे आम वजह यही है: फ़ॉर्मेट ख़राब है, ऐसा नहीं — बात यह है कि जहाँ आप फ़ाइल दिखाना चाहते हैं वह जगह उसे पढ़ ही नहीं सकती।

यह काम करने का फ़ॉर्मेट है

TSV इसलिए बना है कि इसे खोला और बदला जाए। जब तक काम चल रहा है फ़ाइल इसी फ़ॉर्मेट में रखिए, और जब भी बनी हुई प्रति चाहिए हो, इसी से निर्यात कीजिए।

इसके साथ ग़लत क्या होता है

बार-बार आने वाली शिकायतें: कॉलम किस तरह के हैं, यह पढ़ते समय बताया नहीं, अंदाज़े से तय किया जाता है।

इनमें से कोई भी फ़ॉर्मेट से दूर रहने की वजह नहीं है। ये वे बातें हैं जिन्हें इनमें से कोई आपको चौंकाए उससे पहले जान लेना चाहिए — यह अलग दावा है, और ज़्यादा काम का।

वह विभाजक जो आपके डेटा में नहीं है

असली डेटा में कॉमा लगातार आता है — पते, कंपनी नाम, उत्पाद विवरण में। CSV इसे उद्धरण नियमों से सँभालता है, और वहीं फ़ॉर्मेट बिगड़ता है: उद्धृत फ़ील्ड के भीतर उद्धरण चिह्न वाला फ़ील्ड मान्य है, असहज है, और CSV पढ़ने का दावा करने वाले आधे औज़ार इसे असंगत तरीक़े से लागू करते हैं।

टैब चरित्र लगभग कभी किसी फ़ील्ड के भीतर नहीं आता, क्योंकि कोई फ़ॉर्म या डेटाबेस में टैब टाइप नहीं करता। तो TSV आमतौर पर उद्धरण से पूरी तरह बच सकता है: हर लाइन को टैब पर बाँटिए और फ़ील्ड मिल जाते हैं, सही, बिना किसी edge case के।

TSV जहाँ स्थानीय रिवाज़ है

बायोइंफ़ॉर्मेटिक्स, जहाँ जीनोमिक एनोटेशन फ़ाइलें, एक्सप्रेशन मैट्रिक्स और वेरिएंट टेबल आम बात के तौर पर टैब-सीमांकित होती हैं। कमांड-लाइन डेटा काम, क्योंकि मानक Unix औज़ार whitespace पर बाँटते हैं।

बड़े सार्वजनिक डेटासेट और डेटाबेस निर्यात भी, जहाँ डेटा में कॉमा और गद्य होता है और निर्यातक उद्धरण के बारे में सोचना नहीं चाहता। अगर आपको .tsv या .tab फ़ाइल मिली है, वह इन्हीं में से किसी दुनिया से आई है।

अदृश्यता की समस्या

टैब की ख़ूबी उसकी कमी भी है: इसे देखा नहीं जा सकता। एक जगह टैब और दूसरी जगह चार स्पेस वाली फ़ाइल एडिटर में एक जैसी दिखती है और पूरी तरह अलग पार्स होती है।

यह तब सबसे ज़्यादा काटता है जब फ़ाइल हाथ से संपादित हो या कहीं स्पेस इस्तेमाल करने वाली स्क्रिप्ट से बनी हो। कोई भी अच्छा एडिटर whitespace अक्षर दिखा सकता है, और TSV छूने से पहले इसे चालू करना दो-सेकंड की आदत है।

जब डेटा में सचमुच टैब हो तो क्या होता है

IANA विनिर्देश साफ़ है: फ़ील्ड में टैब या newline नहीं हो सकते, बस। कोई escape तंत्र नहीं है, जो पार्सिंग को सरल रखता है।

व्यवहार में दो रिवाज़ बने हैं। कुछ निर्माता backslash क्रम से escape करते हैं; कुछ CSV-जैसा उद्धरण ऊपर लगाते हैं, जो वही सब वापस लाता है जिससे TSV बचता था। न कोई सार्वभौमिक है, इसलिए embed टैब वाली फ़ाइल के लिए CSV ज़्यादा ईमानदार चुनाव है।

Excel लोगों के बदलने की वजह है

Excel आयात संवाद से .txt या .tsv खोलता है और टैब सही सँभालता है, जबकि .tsv पर डबल-क्लिक करना एक्सटेंशन के हिसाब से कुछ कम मददगार करता है। यह वही प्रकार-अनुमान भी लगाता है जो CSV बिगाड़ता है — शुरुआती शून्य ग़ायब होते हैं, कोड तारीख़ बनते हैं।

तो सलाह CSV जैसी ही है: खोलने के बजाय आयात कीजिए, असहज कॉलम को Text सेट कीजिए, और पाने वाला इंसान हो न कि प्रोग्राम तो इसके बजाय XLSX भेजिए।

TSV बनाम CSV, दर्शक से तय

CSV जब फ़ाइल किसी अनजान जगह जा रही हो। यह वही है जो अपलोड फ़ॉर्म और आयात रूटीन नाम से माँगते हैं, और दोनों में से सिर्फ़ एक स्वीकार करने वाला औज़ार CSV स्वीकार करता है।

TSV जब आप दोनों सिरे नियंत्रित करते हों और डेटा कॉमा व मुक्त पाठ से भरा गंदा हो, या काम कमांड लाइन पर हो रहा हो। दोनों के बीच बदलना एक दिशा में यांत्रिक है और दूसरी में सावधानी माँगता है।

बड़ी फ़ाइल पढ़ना

TSV स्ट्रीम होता है, जो इसका दूसरा शांत फ़ायदा है। किसी भी आकार की फ़ाइल पूरा लोड किए बिना लाइन-दर-लाइन पढ़ी जा सकती है, इसलिए कई-गीगाबाइट का निर्यात काम करने लायक़ है।

सचमुच बड़े और बार-बार विश्लेषित किए जाने वाले किसी भी डेटा के लिए, Parquet बेहतर गंतव्य है: कॉलमी, संपीड़ित, प्रकार-युक्त, और लोगों की असली क्वेरी के लिए नाटकीय रूप से तेज़। TSV आदान-प्रदान के लिए सही फ़ॉर्मेट है और सौ बार पढ़े जाने वाले डेटासेट के लिए ग़लत।

ज़रूरी जानकारी, एक जगह

TSV फ़ॉर्मेट की पहचान और उसका स्रोत।
एक्सटेंशन.tsv, .tab
मीडिया टाइपtext/tab-separated-values
पहली बार प्रकाशित1993
विनिर्देशIANA text/tab-separated-values

TSV फ़ाइलें: आम सवाल

TSV फ़ाइल कैसे खोलूँ

कोई भी टेक्स्ट एडिटर इसे दिखाता है, और हर स्प्रेडशीट इसे आयात करती है — Excel में, डबल-क्लिक के बजाय Data फिर From Text/CSV इस्तेमाल कीजिए ताकि कॉलम प्रकार सेट कर सकें। एडिटर में whitespace दिखाना चालू करना लायक़ है।

TSV और CSV में क्या फ़र्क़ है

विभाजक का, और उससे निकलने वाली बातें। कॉमा असली डेटा में लगातार आते हैं, इसलिए CSV को उद्धरण नियम चाहिए जो औज़ार असंगत तरीक़े से लागू करते हैं। टैब लगभग कभी डेटा में नहीं आते, इसलिए TSV को आमतौर पर उद्धरण चाहिए ही नहीं।

कौन-सा इस्तेमाल करूँ

CSV जब फ़ाइल किसी अनजान जगह जा रही हो — यह वही है जो अपलोड फ़ॉर्म और आयात रूटीन नाम से माँगते हैं। TSV जब आप दोनों सिरे नियंत्रित करते हों, डेटा कॉमा और मुक्त पाठ से भरा हो, या काम कमांड लाइन पर हो।

अगर मेरे डेटा में टैब चरित्र हो तो

विनिर्देश इसकी मनाही करता है, और कोई मानक escape तंत्र नहीं है। कुछ निर्माता backslash क्रम इस्तेमाल करते हैं और कुछ CSV-जैसा उद्धरण, कोई सार्वभौमिक नहीं। फ़ील्ड में सचमुच टैब हों तो सही उद्धरण वाला CSV ज़्यादा ईमानदार फ़ॉर्मेट है।

Excel मेरी TSV फ़ाइल क्यों बिगाड़ता है

वही प्रकार-अनुमान जो CSV बिगाड़ता है — शुरुआती शून्य ग़ायब होते हैं, कोड तारीख़ बनते हैं। खोलने के बजाय आयात कीजिए, उन कॉलम को Text सेट कीजिए, या पाने वाला इंसान हो तो XLSX भेजिए।

क्या TSV बड़े डेटासेट के लिए अच्छा है

यह अच्छे से स्ट्रीम होता है, इसलिए कई-गीगाबाइट की फ़ाइल पंक्ति-दर-पंक्ति पढ़ी जा सकती है। बार-बार क्वेरी करने वाले डेटासेट के लिए, Parquet कहीं बेहतर है — कॉलमी, संपीड़ित और प्रकार-युक्त, नाटकीय रूप से तेज़ पढ़ने के साथ।