part - python substring from position
Python: ¿Hay un equivalente de mid, right y left de BASIC? (6)
Quiero hacer algo como esto:
>>> mystring = "foo"
>>> print(mid(mystring))
¡Ayuda!
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]
Funcionan muy bien para leer los caracteres "n" de izquierda / derecha de una cadena, pero, al menos con BBC BASIC, las funciones LEFT$()
y RIGHT$()
le permiten cambiar los caracteres de "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,<n>)
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,<n>,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 ().
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
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
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]