After entering the game at shortstop in the seventh inning Friday night, Lopez got the starting nod Saturday in place of Ryan, who batted .067 (1-for-15) in the team's first four games.
Last year, Lopez played second base for Arizona and Milwaukee. He last started at shortstop two seasons ago when he was in his first stint with the Cardinals.
"I've played that position all my life," he said.
Manager Tony La Russa placed Lopez second in the batting order, the third consecutive game a different player occupied that spot. Ryan batted second in the opening series against Cincinnati, and Ryan Ludwick was put in the two-hole Friday and struck out three times.
Lopez said he would not change his approach batting second, just ahead of Albert Pujols and Matt Holliday.
"I do the same swings and do what I do best," he said. "The only difference is I have to move runners, but I have to do that with less than two outs anyways. You just do your job. It doesn't matter whether you are hitting leadoff or ninth."
La Russa said Lopez would play second base, shortstop, third base and outfield this season.
"He's going to play a lot," La Russa said. "He's going to play all over."
La Russa bristled when asked whether he was sending Ryan a message about his slow start.
"That's not accurate," he said.