Tengo unas cuerdas:
AddData
TestSomething
TellMeWhoYouAre
y así. Quiero agregar espacio antes de las letras mayúsculas. ¿Cómo puedo hacerlo?
                    
                        linux
                                command-line
                                text-formatting
                                
                    
                    
                        HéroeDe Tierra
fuente
                
                fuente

IClimbALadderReadFileFromCDDrivealgunas cadenas como y la solución de @Kusalananda funciona muy bien.Respuestas:
Usando
sed, y asumiendo que no quieres un espacio delante de la palabra:La sustitución buscará una letra mayúscula inmediatamente después de otro carácter que no sea un espacio en blanco e insertará un espacio entre los dos.
Para cadenas con más de un carácter de mayúsculas consecutivas, como
WeAreATeam, esto produceWe Are ATeam. Para ordenar esto, ejecute la sustitución por segunda vez:fuente
gbandera. Pruebeecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'(su comando) para ver por qué no funciona.s/[A-Z]/ \0/ges completamente satisfactorio ... `s / [AZ] / \ 0 / g; s / ^ // 'si realmente te importa.Perl, usando expresiones regulares de ancho cero y mirar hacia atrás:
Esta versión también está separando letras mayúsculas consecutivas.
fuente
ReadFileFromUSBDriveenRead File From U S B Drivemientras que el OP queríaRead File From USB Drive.Agregue espacio entre una letra que no es mayúscula y una letra que es mayúscula
fuente
[^^]("not a caret (^)")?Solución Python:
Prueba de funcionamiento:
fuente
print(line[0], end="")seguirfor char in line[1:]:para evitar imprimir ese espacio no deseado al comienzo de cada línea de salida.