Вот многоразовый набор функций, которые позволят вам более полно понять, что это такое, что вы делаете, в комплекте с комментариями. Идеально подходит для новичка, если это так!
Помните, что это очень пустая и грязная версия, которую вы, возможно, ищете, она неоптимизирована. Патрик Хоу и Моисей Коледое имеют более простые и прямые ответы на несколько строк, которые чрезвычайно pythonic! Однако это можно было бы повторно использовать, введя другие списки/массивы в качестве параметров.
Мое намерение добавить это, чтобы помочь вам понять, что именно вы делаете, «открывая» процесс и шаг за шагом.
# 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)
Вы можете эффективно присвоить функцию переменной:
finish = Convert2Tuple(start)
Таким образом, вы можете получить доступ к значениям, возвращаемым позже.
Cheers!
Я действительно не понимаю, почему вопрос настолько занижен. И почему приемлемые ответы ниспроверены ... вопрос ясен, а код для этого - хороший список. Это не то, что мы пишем 10000 строк для OP. –