Sam Fatu
Sam Fatu

Reputation: 27

How to find even numbers in a string in Python

I tried to find even numbers in a string

    s = "75,41,14,8,73,45,-16"
    evenNumbers = []

    for number in s.split(","):
        if int(number) % 2 == 0 and int(number) > 0:
            evenNumbers += number

    evenNumbers = ','.join(evenNumbers)
    print("Even Numbers : \"{}\"".format(evenNumbers))

and its output is like

Even Numbers : "1,4,8"

I want to make it like

Even Numbers : "14,8"

Upvotes: 1

Views: 4001

Answers (4)

OneCricketeer
OneCricketeer

Reputation: 191874

You need to add numbers, not strings to the list

evenNumbers += int(number)

Then join strings

evenNumbers = ','.join(map(str, evenNumbers))

Otherwise, do evenNumbers.append(number)


Or do it all on one line

evenNumbers = ','.join(filter(lambda x: int(x) % 2 == 0 and int(x) > 0, "75,41,14,8,73,45,-16".split(",")))

Upvotes: 1

Mert Köklü
Mert Köklü

Reputation: 2231

You will take expected output with this. All you need to do to replace evenNumbers += number with evenNumbers.append(int_num).

s = "75,41,14,8,73,45,-16"
evenNumbers = []

for number in s.split(","):
    int_num = int(number)
    if int_num % 2 == 0 and int_num > 0:
        evenNumbers.append(int_num)

print("Even Numbers : \"{}\"".format(evenNumbers))

Upvotes: 0

Viktor Garba
Viktor Garba

Reputation: 313

you could also do a list comprehensions

even_numbers = [n for n in s.split(',') if int(n) % 2 == 0]

Upvotes: 0

Simplicitus
Simplicitus

Reputation: 171

You can append the number to the list. Something like this:

s = "75,41,14,8,73,45,-16"
evenNumbers = []

for number in s.split(","):
    if int(number) % 2 == 0 and int(number) > 0:
        evenNumbers.append(number)

print("Even Numbers : \"{}\"".format(evenNumbers))

"['14', '8']"

Upvotes: 1

Related Questions