Преобразование несовместимого форматирования во время (часы, минуты) в более чистое согласованное форматирование - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь вводить данные и манипулировать ими в python, и у меня возникают проблемы с преобразованием CSV в правильное форматирование строки.

Я пытался напечатать строку и пытался найти строку, используя Regex, но я не слишком знаком с ней.

timeNote = ['18.30-19.00', '4PM-5PM', '3-4', '4-4.10PM', '15-18', '15 - 17']

Я пытался использовать это

for i in range(len(timeNote)):
    print(re.findall(r'\b\d+\b', timeNote[i]))

печатает это

['18', '30', '19', '00']
[]
['3', '4']
['4', '4']
['15', '18']
['15', '17']

Если бы был лучший способ даже преобразовать во временную область, был бы признателен. Я довольно новичок в python, если это еще не очевидно.

1 Ответ

0 голосов
/ 06 июля 2019

Поскольку вы пометили pandas, вот один из подходов.Обратите внимание, что вы можете использовать шаблон внутри extract в качестве шаблона регулярного выражения:

timeNote = ['18.30-19.00', '4PM-5PM', '3-4', '4-4.10PM', '15-18', '15 - 17']
s = pd.Series(timeNote)

pattern = '(?P<start>[\d\.]+)(?P<start_pm>PM)?\D*(?P<end>[\d\.]+)(?P<end_pm>PM)?'

s.str.extract(pattern)

Выход

   start start_pm    end end_pm
0  18.30      NaN  19.00    NaN
1      4       PM      5     PM
2      3      NaN      4    NaN
3      4      NaN   4.10     PM
4     15      NaN     18    NaN
5     15      NaN     17    NaN

Для объяснения регулярных выражений вы можете вставить шаблон здесь .

Оттуда вы можете интерпретировать ваши данные.Обратите внимание, что в этой форме start и and являются строками.

Мы можем даже сойти с ума и разобрать час и минуты:

pattern = ('(?P<s_h>[\d]+)'+  # start hour
           '[.:]?(?P<s_m>\d+)?'+ # start minute
           '(?P<s_pm>PM)?' + # start PM
           '\D*(?P<e_h>\d+)'+ # end hour
           '[.:]?(?P<e_m>\d+)?'+ # end minute
           '(?P<e_pm>PM)?' # end PM
          )

print(s.str.extract(pattern))

дает:

  s_h  s_m s_pm e_h  e_m e_pm
0  18   30  NaN  19   00  NaN
1   4  NaN   PM   5  NaN   PM
2   3  NaN  NaN   4  NaN  NaN
3   4  NaN  NaN   4   10   PM
4  15  NaN  NaN  18  NaN  NaN
5  15  NaN  NaN  17  NaN  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...