Search code examples
pythonpython-3.xpython-re

How to convert str to int python


I have a function max_population which should output ('eu_kyiv', 24834). But output('eu_kyiv', '24834')

How can I do that ('24834') outputted as int

My code:

import re

def max_population(data):
    a = []
    for i in data:
        b = re.findall(r',\S+_\S+,[0-9]+', i)
        a += [[ b for b in i.split(',') if b] for i in b]
return max(a, key=lambda x: int(x[1]))


data = ["id,name,poppulation,is_capital",
        "3024,eu_kyiv,24834,y",
        "3025,eu_volynia,20231,n",
        "3026,eu_galych,23745,n",
        "4892,me_medina,18038,n",
        "4401,af_cairo,18946,y",
        "4700,me_tabriz,13421,n",
        "4899,me_bagdad,22723,y",
        "6600,af_zulu,09720,n"]

print(max_population(data))

I tried

 for i in data:
        b = re.findall(r',\S+_\S+,[0-9]+', i)
        a += [[ int(b) for b in i.split(',') if b] for i in b]
 return max(a, key=lambda x: int(x[1]))

But output error ValueError: invalid literal for int() with base 10: 'eu_kyiv'

It is important to use re module


Solution

  • import re
    
    def max_population(data):
        a = []
        for i in data:
            b = re.findall(r',\S+_\S+,[0-9]+', i)
            a += [[b for b in i.split(',') if b] for i in b]
    
        maximum = max(a, key=lambda x: int(x[1]))
        return [maximum[0],int(maximum[1])]