PyCharm 2021.3 problema con pegar entrada multilínea
Tengo un problema de principiante con la consola de Pycharm y la inserción de entradas de varias líneas. Utilizo este código:
def multi_input():
try:
while True:
data=input()
if not data: break
yield data
except KeyboardInterrupt:
return
ips = list(multi_input())
print(len(ips)) # test
Este código funciona bien en CMD de Windows, cuando pego 300 líneas obtengo una lista con 300 elementos.
Cuando hago lo mismo en la consola de Pycharm, obtengo una lista con 1 elemento. Las líneas individuales se concatenan con \n. ¿Alguien puede explicar esta diferencia? ¿Cómo puedo solucionar este problema?
Entrada:
10.63.134.223
10.130.140.230
10.72.206.50
10.130.210.185
10.63.136.165
Salida al usar la consola de Pycharm:
ips
['10.63.134.223\n10.130.140.230\n10.72.206.50\n10.130.210.185\n10.63.136.165']
Salida al usar CMD de Windows:
['10.63.134.223', '10.130.140.230', '10.72.206.50', '10.130.210.185', '10.63.136.165']
davy.ai
Explicación del problema de entrada de varias líneas en la consola de Pycharm
El problema con la consola de Pycharm y al pegar una entrada de varias líneas es que la consola trata todo el texto pegado como una única entrada en lugar de líneas individuales. Por lo tanto, cuando se utiliza la función
input()
, se lee todo el texto pegado como una única línea con\n
utilizado para separar las líneas individuales.Solución para el problema de entrada de varias líneas en la consola de Pycharm
Para solucionar el problema con la consola de Pycharm y al pegar una entrada de varias líneas, se puede modificar la función
multi_input()
de la siguiente manera:La adición del método
rstrip()
elimina cualquier espacio en blanco al final, incluyendo los caracteres\n
. Esto asegura que cada línea de entrada se trate como un elemento separado en la lista.