2 votos

Contar comas en una cadena de texto y agregar una nueva línea

Tengo un gran archivo (1400 páginas, una sola cadena de texto) estoy tratando de hacer legible en Excel. El archivo contiene separados por comas valores, consiguiendo de esta en Excel no es normalmente un problema, excepto que la información debe ser en varias líneas en Excel, y no todos en la misma línea, ya que está en el documento.

Lo que debería ser una línea de información separados por 115 comas.

Mi plan era usar el Notepad++ para contar 115 comas, crea una nueva línea, contar 115 comas, crea una nueva línea hasta que se ha ido a través de todo el documento. Después de esta operación debe ser fácil de conseguir estructurado en Excel. Sin embargo, he estado luchando poner el necesario expresiones juntos.

Si hay otro más sensata manera de hacer esto soy todo oídos, podría ser que estoy en el camino equivocado. He estado tratando de utilizar el buscar/reemplazar herramienta (CTRL+H) en el Bloc de notas++.

He estado tratando de utilizar "buscar":

(,*?)\,{115}

El problema es que esta es buscando 115 comas seguidas, pero necesito contar a los 115 primeros comas en una línea de texto y, a continuación, hacer un parapraph/nueva línea y hacerlo de nuevo. Cualquier ayuda/sugerencias sería muy apreciada. He estado pasando bastante tiempo tratando de encontrar las respuestas.

1voto

Toto Puntos 294
  • Ctrl+H
  • Qué buscar: (?:.+?,){115}\K
  • Reemplazar con: \n o \r\n
  • compruebe Envoltura alrededor de
  • verificación de la expresión Regular
  • NCOMPRUEBE . matches newline
  • Reemplazar todos

Explicación:

(?:         # start non capture group
    .+?     # 1 or more any character, not greedy
    ,       # a comma
){115}      # end group, must appear 115 times
\K          # forget all we have seen until this position

Reemplazo:

\n          # a line feed, change it to \r\n for windows files

Esto evitará que la coma al final de cada línea. Si desea eliminar, use:

(?:.+?,){114}.+?\K

0voto

Pavel Skipenes Puntos 1

ponga el texto en la variable de la cadena de entrada y ejecútelo en python. Cambie la variable numberofcolums según la cantidad de columnas que desee. Si no tiene Python instalado, puede usar una herramienta en línea como esta

 inputstring = "one, two, three, four,five,six,seven,eight,ten,etc,,,2342354,2,1,,,1,3,,,,"
outputstring = ""

numberofcolums = 115
numberofcommas = 0

print(inputstring)
print(inputstring[3]!=",")
for character in inputstring:
    if(character != ","):
        outputstring += character
    elif(numberofcommas == numberofcolums - 1):
        outputstring += ",\
        numberofcommas = 0
    else:
        outputstring += character
        numberofcommas += 1

print(outputstring)
 

-1voto

Raccoondude Puntos 1

Ok, lo mejor que puedes hacer es crear un script que resuelva este problema,

Si entiendo correctamente su problema, necesita dividir una cadena.

Haría esto con la función pythons split() .

después de que pueda hacer que Python escriba un archivo, y cree una nueva línea para cada parte de su matriz que obtuvo de la función split() .

(No soy el mejor en explicar, si necesita ayuda, puedo hacer el script para usted, pregunte que no debería tomar mucho tiempo, solo pregunte)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: