Passengers were initially trapped when a carriage tipped on to its side at the station in Lucerne.
The incident occurred at about 14:00 local time (13:00 GMT) on Wednesday, Swiss Federal Railways (SBB) said.
There were 160 passengers on board the train, owned by Italian operator Trenitalia, which was travelling to Basel from Milan, Italy.
The fourth carriage of the train struck a power cable when it derailed, delaying rescue efforts, a spokesman for Lucerne police, Urs Wigger, said.
Lucerne police said the passengers were evacuated and at least three people required treatment and were taken to hospital. Their injuries are not thought to be life-threatening.
Services in and out of the station were suspended for the rest of the day, SBB said.
The cause of the derailment was not immediately clear.
At least three people were injured when a train derailed while pulling out of a station in Switzerland, officials said.