Analyzing records of London Underground outages
That's a fun problem.

Don't use more memory than you have to

with open('input.txt') as file:  # read the input file into a list of lines
    file_input = file.read().splitlines()
# ...
for var in file_input:
    LonUndOutages.append(var.split("|"))



shouldn't be necessary. Rather than calling file.read(), iterate on the file object itself. It will yield lines that you can split on directly.

Naming conventions

LonUndOutages


becomes

lon_und_outages


and similarly for your other variables.

Unpack your line

Assign variables to the results of your split, like so:

date, line, station, notes = outage


Note that there's a nomenclature collision, because your spec describes one column as line, so call each file line a record or an outage.

Separate output from logic

        Prob1Output = Prob1Output + line[2] + "was affected by an outage on July 10, 2019\n"


You're storing output early for two purposes: to eventually show that output, and to know whether there were stations affected. This dual-purpose code is generally not advisable. Store the confirmed outages in a separate list, or yield them from a generator function, to be consumed and formatted by an output function that has no logic at all.

General

Run a linter that will tell you PEP8 hints, or use an IDE that will do the same. Make functions to house your logic.

Example

from collections import namedtuple
from datetime import date, datetime
from typing import Iterable, Set

Record = namedtuple('Record', ('date', 'line', 'station', 'notes'))


def read_file(fn: str) -&gt; Iterable[Record]:
    with open(fn) as file:
        for record in file:
            date_str, *others = record.split('|')
            record_date = datetime.strptime(date_str, '%m-%d-%Y').date()
            yield Record(record_date, *others)


def stations_on_date(records: Iterable[Record], record_date: date) -&gt; Set[str]:
    return set(r.station for r in records if r.date == record_date)


def lines_and_stations_between_dates(
    records: Iterable[Record],
    start: date,
    end: date,
) -&gt; (Set[str], Set[str]):
    matching = [r for r in records if start &lt;= r.date &lt;= end]
    lines = set(r.line for r in matching)
    stations = set(r.station for r in matching)
    return lines, stations


def print_iter(to_print: Iterable[str]):
    msg = ', '.join(to_print)
    print(msg or 'none')


def main():
    records = tuple(read_file('input.txt'))

    date1 = date(2019, 7, 10)
    print(f'Stations affected by an outage on {date1}:')
    stations1 = stations_on_date(records, date1)
    print_iter(stations1)

    start2 = date(2017, 7, 10)
    end2 = date(2017, 11, 14)
    range_desc = f'between {start2} and {end2}'
    lines2, stations2 = lines_and_stations_between_dates(records, start2, end2)

    print(f'Lines with outages {range_desc}:')
    print_iter(lines2)

    print(f'Number of stations affected {range_desc}:')
    print(len(stations2))


if __name__ == '__main__':
    main()


Note:


Output and logic are separated
Use a namedtuple for better structure
Hold onto a date, not a datetime
Use set to avoid duplicates in the output