Hier eine wiederverwendbare Reihe von Funktionen, die Sie gründlicher würde es ermöglichen, zu verstehen, was es ist, dass Sie tun, komplett mit Kommentaren. Perfekt für einen Anfänger, wenn das der Fall ist!
Achte darauf, dies ist eine sehr heruntergekommene und dreckige, unpythonische Version dessen, wonach du suchst, es ist nicht optimiert. Patrick Haugh und Moses Koledoye haben beide einfachere und geradlinigere, wenige Zeilen umfassende Antworten, die extrem pythisch sind! Dies wäre jedoch wiederverwendbar, indem andere Listen/Arrays als Parameter eingegeben werden.
Meine Absicht, dies hinzuzufügen, soll Ihnen helfen, zu verstehen, was Sie tun würden, indem Sie den Prozess "öffnen" und Schritt für Schritt gehen.
# Import the regular expressions
import re
# Your list
start = ['foo 1/ bar 2', 'foo 2/ bar 3', 'foo 34/ bar 45']
def hasNumbers(stringToProcess):
""" Detects if the string has a number in it """
return any(char.isdigit() for char in stringToProcess)
def Convert2Tuple(arrayToProcess):
""" Converts the array into a tuple """
# A list to be be returned
returnValue = []
# Getting each value/iterating through each value
for eachValue in arrayToProcess:
# Determining if it has numbers in it
if hasNumbers(eachValue):
# Replace forward slash with a comma
if "/" in eachValue:
eachValue = eachValue.replace("/", ", ")
# Substitute all spaces, letters and underscores for nothing
modifiedValue = re.sub(r"([a-zA-Z_ ]*)", "", eachValue)
# Split where the comma is
newArray = modifiedValue.split(",")
# Turn it into a tuple
tupledInts = tuple(newArray)
# Append the tuple to the list
returnValue.append(tupledInts)
# Return it!
return returnValue
# Print that baby back to see what you got
print Convert2Tuple(start)
Sie können effektiv die Funktion einer Variablen zuweisen:
finish = Convert2Tuple(start)
So können Sie später die Rückgabewerte zugreifen.
Prost!
Ich verstehe wirklich nicht, warum die Frage so stark abgelehnt wird. Und warum akzeptable Antworten abgelehnt werden ... die Frage ist klar und der Code, um das zu erreichen, ist ein netter Listcomp. Es ist nicht so, als würden wir 10000 Zeilen für das OP schreiben. –