Когда вы собираетесь преобразовать значения в целые числа в l oop во второй последней строке вашего скрипта, вы можете проверить, является ли каждое значение целым числом или строкой, и если это строка, просто разделите преобразуйте разделенные значения в целые числа и pu sh их во временный список с именем, скажем, strVal
, а затем добавьте этот временный список в новый список с именем, скажем, S_follow_int
. Но если значение не является строкой, просто добавьте их в S_follow_int
, ничего не делая.
data= ['2,3', 4, '5,6', 8, 7, 9, 8, 9, 3, 11, 0]
S_follow = []
S_follow_int = []
for row in range(0, len(data)):
if (sheet.cell(row,3).value is not None):
S_follow.append(sheet.cell(row, 3).value);
# to convert the list from string to int, nested list
for i in range(0, len(S_follow)):
#if the current value is a string, split it, convert the values to integers, put them on a temp list called strVal and then append it to S_follow_int
if type(S_follow[i]) is str:
x = S_follow[i].split(',')
strVal = []
for y in x:
strVal.append(int(y))
S_follow_int.append(strVal)
#else if it is already an integer, just append it to S_follow_int without doing anything
else:
S_follow_int.append(S_follow[i])
print(S_follow_int)
Однако я бы порекомендовал вам проверить тип данных (str / int) каждого значения в исходном l oop, которое вы использовали для извлечения данных из файла Excel. вместо того, чтобы помещать все значения в S_follow
и затем преобразовывать тип следующим образом:
#simplified representation of the logic you can use for your script
data = ['2,3', 4, '5,6', 8, 7, 9, 8, 9, 3, 11, 0]
x = []
for dat in data:
if dat is not None:
if type(dat) is str:
y = dat.split(',')
strVal = []
for z in y:
strVal.append(int(z))
x.append(strVal)
else:
x.append(dat)
print(x)