Member 13647869 Ответов: 1

Измените первый элемент в списке со строки на дату


У меня есть следующий текстовый файл, в котором есть эти списки :

['2009-06-12 14:19:28 ', '0']
['2009-06-13 00:58:10 ', '0']
['2009-06-13 01:00:25 ', '0']
['2009-06-15 03:24:23 ', '0']
['2009-06-25 17:50:46 ', '0']
['2009-06-29 20:54:52 ', '0']
['2009-06-30 20:31:19 ', '0']
['2009-07-09 03:01:25 ', '0']
['2009-07-12 14:45:53 ', '0']
['2009-07-12 15:09:38 ', '0']



Второй элемент является целым числом, однако первый элемент является строкой. Мне нужно, чтобы первый элемент каждого lis был датой, а не строкой?

Я попробовал этот код:

word[0]=datetime.strptime(word[0],'%Y/%m/%d %H:%M:%S')



но я получаю эту ошибку:

ValueError: time data '2009-04-02 22:50:06 ' does not match format '%Y/%m/%d %H:%M:%S'



текущий код, который у меня есть, который очищает данные, выглядит следующим образом:

with open('newdata.txt') as f:
    for line in f:
       tweet=re.sub(r'T\t',"",line)
       t=re.sub(r'W\t',"\/\/",tweet)
       data=t.split("\/\/")
       sentiment_value= s.sentiment(data[1])
       data.append(sentiment_value)

       words = [w.replace('pos', '1') for w in data]
       word=[w.replace('neg','0')for w in words]
       del word[1]
       print(word)


Что я уже пробовал:

Я попробовал этот код:

word[0]=datetime.strptime(word[0].strip(),'%Y/%m/%d %H:%M:%S')



но я получаю эту ошибку:

ValueError: time data '2009-04-02 22:50:06 ' does not match format '%Y/%m/%d %H:%M:%S'

Richard MacCutchan

У вас есть дефисы (-) как разделители в вашей строке даты, но косые черты вперед (/) в вашей строке формата.

Member 13647869

я изменил его на этот:
word[0]=datetime.strptime(word[0],'%Y-%m-%d %H:%M:%S')

и получил вот это:

ValueError: необращенные данные остаются:

Richard MacCutchan

Посмотрите на свои данные, там есть пробел после поля секунд. Ваша строка формата должна совпадать именно так.

Member 13647869

я поставил это место, или мне нужно его убрать?

Richard MacCutchan

Как я уже сказал выше.

Member 13647869

это точный формат

Member 13647869

ладно, я понял. это chnages но я получаю это,
[дата-время.дата-время(2009, 8, 31, 23, 58, 9), 1]
[дата-время.дата-время(2009, 8, 31, 23, 58, 9), 1]
[дата-время.дата-время(2009, 8, 31, 23, 58, 9), 1]

есть ли какой-нибудь способ удалить дату и время? или это как стандартный результат?

Richard MacCutchan

Я не понимаю вопроса.

Member 13647869

слова "датим", "датим", почему они добавлены? например, это формат свидания?

Richard MacCutchan

Без понятия. Пожалуйста, используйте Улучшить вопрос ссылка выше, и показать фактический код, который производит вывод или ошибку. Мы не можем догадаться, что вы делаете.

1 Ответов

Рейтинг:
2

Maciej Los

С первого взгляда... Кажется, вам нужно заменить его:

dt = datetime.strptime("2009-04-02 22:50:06",'%Y/%m/%d %H:%M:%S')

с:
dt = datetime.strptime("2009-04-02 22:50:06", "%Y-%m-%d %H:%M:%S")


Видеть:
Преобразование Строк В Datetime[^]
8.1. datetime — основные типы дат и времени — документация Python 3.6.6rc1[^]

Но... то документация[^] государства также:
Цитата:
Вызов strptime() с неполными или неоднозначными директивами ISO 8601 вызовет ValueError.

(...)

Поскольку формат зависит от текущей локали, следует соблюдать осторожность при принятии предположений о выходном значении. Порядок расположения полей будет варьироваться (например, “month/day/year” против “day/month/year”), и выходные данные могут содержать символы Юникода, закодированные с использованием кодировки по умолчанию локали (например, если текущая локаль-ja_JP, то кодировка по умолчанию может быть любой из eucJP, SJIS или utf-8; используйте locale.getlocale() чтобы определить кодировку текущей локали).


Member 13647869

я попробовал и получил эту ошибку:

ValueError: временные данные '2009-04-02 22:50:06' не соответствуют формату '%y-%m-%d %H:%M:%S'


кроме того, мне нужно индексировать элемент каждого списка, потому что каждый список имеет другую строку даты в первом элементе

Member 13647869

извините, мне кажется, что я поставил неправильный образец текстового файла, который я изменил

Richard MacCutchan

Должно быть в верхнем регистре (Y) за 4-значный год.

Maciej Los

Спасибо! Обновлено!
Кстати: я не специалист по Python ;)

Richard MacCutchan

Теперь это так.

Maciej Los

:смеяться:

Member 13647869

ух ты! вот как вы становитесь экспертами?! поздравляю Мацей Лос =)

Maciej Los

Спасибо!
Следуйте тем же путем, и Вы тоже станете экспертом :)

Member 13647869

ха-ха, я очень на это надеюсь!