Question: ```
def ints(filename):
    a = []
    f = open(filename, "r")
    lines = f.readlines()
    f.close()
    for line in lines:
        numbers = line.split()
        for number in numbers:            
            a.append(int(number))
    return a

```

This is my function so far, I want to be able to read a file containing integers and characters like "x" and "b" etc and return a list of only the integers. At the moment the function can only deal with a file containing integers.

How can I modify this to exclude characters or letters?

Answer: 
This is my edit of your code, which performs as you expect it to.

```
  def ints(filename):
        """A function that takes the filename of a file as an input arguement, computs and returns a list of
        integers of all the numbers in the file."""
        a = []
        f = open(filename, "r")
        lines = f.readlines()
        f.close()
        for line in lines:
            for character in line:
                try:
                    a.append(int(character))
                except ValueError:
                    pass
        return a

```
Using more modern Python idioms:

```
def ints(filename):
    with open(filename, "r") as f:
        for line in f:
            for number in line.split():
                try:
                    yield int(number)
                except ValueError:
                    pass

a = list(ints("testdata.txt"))
print(a)

```

Basically, try to convert to int, which will raise ValueError if the string is not a decimal number. Catch it and ignore it and carry on.