Photo: Uri police
Initial reports suggested 27 people had been hurt in the accident, but that was later raised to 33, though none were critically injured.
Around 100 people were onboard when the accident happened shortly before midday, including three school classes counting 65 primary and secondary school students, Uri police said.
Eighteen of those injured were children, it said.
Of the 15 other people injured, 13 were Swiss and two were Dutch.
The accident happened shortly as a train run by the Matterhorn-Gotthard rail company, made up of a locomotive and five carriages, attempted a manoeuvre at the station in Andermatt, near the Italian border.
The locomotive was supposed to move to a parallel track to move from the back of the train to the front, and allow the train to head back towards the Alpine resort of Disentis.
But Jan Barwalde, a spokesman for the rail company, told AFP something had gone wrong and the locomotive had slammed into the carriages.
He said the locomotive had been travelling at a speed of 15 to 20 km/hr, and there appeared to be very little material damage.
But the collision was nonetheless dramatic for the schoolchildren, many of whom were heading to a camp.
“We were just getting into the train when there was a jerk,” 32-year-old secondary school teacher Chantal Michel told Blick.
She said some students who were on the stairs lifting suitcases into the train when the accident happened had fallen.
Twenty-five of those injured had been taken to hospital, but most were quickly released.
Another teacher, Andre Kobelt, told Blick that one child was being kept in hospital overnight with a suspected concussion.