0

This is my code

from collections import Counter 
counter = Counter()
with open('demo.txt') as f:
    for line in f:
        splits = line.split(';')
        change = float(splits[6])
        country = splits[1].strip()
        counter[country] += change
#Percentage Change By Countries"
print()
print ("Percentage Change By Countries")
for country, change_sum in counter.most_common():
    print(country, change_sum,"%")

This is the text file "Demo.txt"

World Population Data 2019 from the United Nations
Rank; Country; 2018; 2019; % Share; Pop Change; % Change; Continent
1; China; 1427647786; 1433783686; 18.6; 6135900; 0.43; Asia
2; India; 1352642280; 1366417754; 17.7; 13775474; 1.02; Asia
3; United States of America; 327096265; 329064917; 4.27; 1968652; 0.60; North America
4; Indonesia; 267670543; 270625568; 3.51; 2955025; 1.10; Asia
5; Pakistan; 212228286; 216565318; 2.81; 4337032; 2.04; Asia
6; Brazil; 209469323; 211049527; 2.74; 1580204; 0.75; South America
7; Nigeria; 195874683; 200963599; 2.61; 5088916; 2.60; Africa
8; Bangladesh; 161376708; 163046161; 2.11; 1669453; 1.03; Asia
9; Russian Federation; 145734038; 145872256; 1.89; 138218; 0.09; Europe
10; Mexico; 126190788; 127575529; 1.65; 1384741; 1.10; North America

I tried readlines() but i received an error " Out of range".How do i skip the first two lines?

4 Answers4

1

If you want to skip the first n lines, you can just call next on the file object n times:

with open("demo.txt") as f:
    for _ in range(2):
        next(f)
    for line in f:
        ...

This solution avoids having to call f.readlines(), which will allocate a list containing all lines, which you then slice to allocate another list.

L3viathan
  • 26,748
  • 2
  • 58
  • 81
0

this may help

Also

 with open(file) as f:
    content = f.readlines()
    content = content[2:]
0

Either use @SayandipDutta's comment, so instead of:

if userInput in x.lower():

You use:

if x[0].isnumeric() and userInput in x.lower():

Or do:

with open("demo.txt", 'r') as f:

        for x in f.readlines()[2:]:
          if userInput in x.lower():
            result.append(x.split(';'))
U13-Forward
  • 69,221
  • 14
  • 89
  • 114
0

def file_search():
    userInput = input('Enter a country: ').lower()
    result = []
    with open("json.txt", 'r') as f:
        for x in f:
            if userInput in x.lower():
                result.append(x.split(';'))
    for s in result:
        print(s[1] + "check:" + s[3])
file_search()
from collections import Counter 
counter = Counter()
with open('json.txt') as f:
    for i in range(0,2):
            next(f)

    for line in f:
        splits = line.split(';')
        change = float(splits[6])
        country = splits[1].strip()
        counter[country] += change
#Percentage Change By Countries"
print()
print ("Percentage Change By Countries")
for country, change_sum in counter.most_common():
    print(country, change_sum,"%")

enter image description here

Sebin Sunny
  • 1,753
  • 10
  • 9