Python: ¿Hay un equivalente de mid, right, and left de BASIC?

Quiero hacer algo como esto:

>>> mystring = "foo" >>> print(mid(mystring)) 

¡Ayuda!

rodajas al rescate 🙂

 def left(s, amount): return s[:amount] def right(s, amount): return s[-amount:] def mid(s, offset, amount): return s[offset:offset+amount] 

Si recuerdo mi QBasic, derecha, izquierda y media, hago algo como esto:

 >>> s = '123456789' >>> s[-2:] '89' >>> s[:2] '12' >>> s[4:6] '56' 

http://www.angelfire.com/scifi/nightcode/prglang/qbasic/function/strings/left_right.html

Gracias Andy W

Encontré que el mid () no funcionó como esperaba y modifiqué lo siguiente:

 def mid(s, offset, amount): return s[offset-1:offset+amount-1] 

Realicé la siguiente prueba:

 print('[1]23', mid('123', 1, 1)) print('1[2]3', mid('123', 2, 1)) print('12[3]', mid('123', 3, 1)) print('[12]3', mid('123', 1, 2)) print('1[23]', mid('123', 2, 2)) 

Lo que resultó en:

 [1]23 1 1[2]3 2 12[3] 3 [12]3 12 1[23] 23 

Que era lo que esperaba. El código mid () original produce esto:

 [1]23 2 1[2]3 3 12[3] [12]3 23 1[23] 3 

Pero las funciones izquierda () y derecha () funcionan bien. Gracias.

Puedes usar este método también actuará así.

 thadari=[1,2,3,4,5,6] #Front Two(Left) print(thadari[:2]) [1,2] #Last Two(Right) print(thadari[:-2]) [5,6] #mid mid = len(thadari) //2 lefthalf = thadari[:mid] [1,2,3] righthalf = thadari[mid:] [4,5,6] 

Espero que ayude

Funcionan muy bien para leer los caracteres “n” de la izquierda / derecha de una cadena, pero, al menos con BBC BASIC, las funciones LEFT$() y RIGHT$() le permiten cambiar los caracteres de la “n” izquierda / derecha .. .

P.ej:

 10 a$="00000" 20 RIGHT$(a$,3)="ABC" 30 PRINT a$ 

Produciría

 00ABC 

Edit: desde que escribí esto, he encontrado mi propia solución …

 def left(s, amount = 1, substring = ""): if (substring == ""): return s[:amount] else: if (len(substring) > amount): substring = substring[:amount] return substring + s[:-amount] def right(s, amount = 1, substring = ""): if (substring == ""): return s[-amount:] else: if (len(substring) > amount): substring = substring[:amount] return s[:-amount] + substring 

Para devolver n caracteres que llamarías

 substring = left(string,) 

Donde el valor predeterminado es 1 si no se suministra. Lo mismo es cierto para el derecho ()

Para cambiar los n caracteres a la izquierda o derecha de una cadena a la que llamarías

 newstring = left(string,,substring) 

Esto tomaría los primeros n caracteres de la subcadena y sobrescribiría los primeros n caracteres de la cadena, devolviendo el resultado en newstring. Lo mismo funciona para right ().

Esta es la solución de Andy. Acabo de dirigirme a la preocupación de User2357112 y le di nombres de variables significativos. Soy un novato de Python y preferí estas funciones.

 def left(aString, howMany): if howMany <1: return '' else: return aString[:howMany] def right(aString, howMany): if howMany <1: return '' else: return aString[-howMany:] def mid(aString, startChar, howMany): if howMany < 1: return '' else: return aString[startChar:startChar+howMany]