Как преобразовать кортеж в строку в python и использовать ее в strptime? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть список кортежей в Date []: [[2017, 1, 1], [2017, 1, 1], . . .

Как мне преобразовать каждый из них в строку?

X=[]
Y=[]
for i in range(len(Date)):
    if(Date[i][0]==2017):
        str=''.join(Date[i])
        X.append(datetime.datetime.strptime(str, '%G %V %u').date())
        Y.append(Val[i])

strptime требуется str для преобразования, если я добавляю туда Date [i], он говорит, что принимает str, а не tuple. Я попытался преобразовать его через str=''join(Date[i]), но он говорит, что strptime принимает только str, а не ints. В чем здесь проблема?

Ответы [ 4 ]

2 голосов
/ 11 марта 2020

Не нужно использовать strptime, вы можете передать свои значения datetime.datetime, так как они

X.append(datetime.datetime(*Date[i]).date())

Также вашему коду требуется некоторая полировка, имена переменных должны быть в нижнем регистре, вместо этого итерации по диапазону вы можете выполнять итерации непосредственно по значениям date и val.

date = [[2017, 1, 1], [2017, 1, 1]]
val = [0, 1]

x = []
y = []
for i, v in zip(date, val):
    if i[0] == 2017:
        x.append(datetime.datetime(*i).date())
        y.append(v)
0 голосов
/ 11 марта 2020

Пришлось сопоставить дату с str по карте, а затем соединить ее с пробелами, решив проблему!

X=[]
Y=[]
count=00
for i in range(len(Date)):
    if(Date[i][0]==2017):
        if (count>23):
            count=00
        sstr=' '.join(map(str,Date[i]))
        X.append(datetime.datetime.combine(datetime.datetime.strptime(sstr, '%G %V %u').date(),datetime.time(count,00)))
        #X.append(Date[i])
        Y.append(Val[i])
        count=count+1
0 голосов
/ 11 марта 2020

Вы можете просто инициализировать datetime.date объект напрямую:

X.append(datetime.date(year=Date[i][0], month=Date[i][1], day=Date[i][2]))

Или даже

X.append(datetime.date(*Date[i]))
0 голосов
/ 11 марта 2020

Просто создайте datetime экземпляр из трех ваших параметров

dates = [[2017, 1, 1], [2017, 1, 1]]
X = []
for date in dates:
    if date[0] == 2017:
        dt = datetime.datetime(*date)
        X.append(dt.strftime('%G %V %u'))
...