सवाल कॉलम में अद्वितीय मान और उनकी गणना प्राप्त करें


मेरे पास इस तरह का एक स्तंभ है।

Streptococcus
Ecoli
Bcoli
Ecoli
streptococcus
Streptococcus
Mycobacterium
Ecoli

मुझे इस तरह की एक फाइल चाहिए (जिसमें सभी अद्वितीय मूल्य और उनकी संबंधित गणना शामिल है)

Streptococcus 3
Ecoli 3
Bcoli 1
Mycobacterium 1

क्या कोई इसे उबंटू 12.04 में प्राप्त करने में मदद कर सकता है?


1
2017-07-05 10:21


मूल


कौनसी भाषा? खोल, सी, पायथन .. कोई भी? - user.dz


जवाब:


मान लें कि प्रत्येक आइटम दूसरी पंक्ति पर दिखाई देता है, यहां एक पायथन समाधान है। बेशक आप इसे प्रिंट करने की बजाय फ़ाइल को परिणाम लिख सकते हैं।

#!/usr/bin/env python
sourcefile = "/path/to/sourcefile"

with open(sourcefile, "r") as germ:
    germ = [item.lower().replace("\n", "") for item in germ.readlines()]
for item in sorted(set(germ)):
    print item.title(), germ.count(item)

यह देता है:

Bcoli 1
Ecoli 3
Mycobacterium 1
Streptococcus 3

इसके प्रयेाग के लिए

ऊपर दिए गए कोड को खाली टेक्स्टफाइल में पेस्ट करें, इसे सेव करें get_uniques.py, इसे निष्पादन योग्य बनाएं (सुविधा कारणों से, इसलिए यदि आप इसे चलाते हैं तो आपको भाषा टाइप करने की आवश्यकता नहीं है) और इसे टर्मिनल विंडो में कमांड द्वारा चलाएं:

/path/to/get_uniques.py

यदि आप इसे सीधे फ़ाइल में लिखना चाहते हैं

नीचे दिए गए कोड का प्रयोग करें:

#!/usr/bin/env python
sourcefile = "/path/to/sourcefile"
destfile = "/path/to/destinationfile"

with open(sourcefile, "r") as germ:
    germ = [item.lower().replace("\n", "") for item in  germ.readlines()]
with open(destfile, "wt") as germcount:
    for item in sorted(set(germ)):
        germcount.write(item.title()+" "+str(germ.count(item))+"\n")

2
2017-07-05 12:03



आपको .py फ़ाइल निष्पादन योग्य बनाने की आवश्यकता नहीं है। बस चल रहा है python file.py पर्याप्त है। और इनपुट फ़ाइल पथ का संक्षिप्त रूप भी न दें .py फ़ाइल। लघु रूप का मतलब है ~/Desktop। यदि आप ऐसा करते हैं तो यह एक त्रुटि देता है। तो पथ विस्तारित रूप में होना चाहिए। - Avinash Raj


सॉर्ट और यूनिक का उपयोग करना,

$ sort f | uniq -ci | awk '{print $2,$1}'
Bcoli 1
Ecoli 3
Mycobacterium 1
streptococcus 3

1
2017-07-05 10:23



या यदि आवश्यक हो तो मामले को अनदेखा करने के लिए आप uniq को आसानी से पास कर सकते हैं। यह uniq -ci होगा। - Mahdi