Как разбить элемент в списке на два элемента? - PullRequest
1 голос
/ 20 мая 2019

Я хочу разделить элементы списка, каждый элемент в настоящее время состоит из фильма и даты, однако теперь мне нужно разделить их, чтобы я мог добавить их в базу данных

Это то, что я 'я пробовал

movies=["The Big Bad Fox and Other Tales (English subtitles)('23rd', 'May')"]
splitter=re.compile('(/(.+)').split
[part for img in movies for part in splitter(img) if part]

Как мне решить эту проблему?

Ответы [ 4 ]

2 голосов
/ 20 мая 2019

Вы были почти там; D

import re

movies=["The Big Bad Fox and Other Tales (English subtitles)('23rd', 'May')"]

matcher = re.compile(r"^(.*)\((.*?)\)$").match

print([matcher(movie).groups() for movie in movies])

Я предлагаю использовать RegExr для изучения и проверки регулярных выражений.

2 голосов
/ 20 мая 2019

Я не уверен, в каком формате вы надеялись получить элементы, но вы могли бы уточнить сходства, например, если каждая дата начинается с "('".

movies = ["The Big Bad Fox and Other Tales (English subtitles) ('23rd','May')"]
titles,dates = [],[]

for i in range(len(movies)):
    newTitle,newDate,sign,count = "","",False,0

    for char in movies[i]:
        if char == "(":
            sign = True
        elif sign == True:
            if char == "'":
                newDate += "(" + movies[i][count:]
                break
        else:
            newTitle += char
        count += 1
    titles.append(newTitle)
    dates.append(newDate)

print(titles)
print(dates)

Вывод:

['The Big Bad Fox and Other Tales ']

["('23rd','May')"]

Надеюсь, это помогло!

1 голос
/ 20 мая 2019

Мы можем использовать три важные функции python для этой задачи: replace(pattern, replacement) string[start_position:end_position] и string.index(pattern)

movies=["The Big Bad Fox and Other Tales (English subtitles)('23rd', 'May')"]

Сначала создайте 2 шаблона, которые обозначают начало и конец области даты:

date_start = "('"
date_end = "')"

Затем удалите эту часть строки для дальнейшего анализа:

date_information = movies[0][movies[0].index(date_start):movies[0].index(date_end)]

На этом этапе «информация о дате» должна быть ('23rd', 'May

Затем просто обрежьте первые 2 символа и замените одинарные кавычки:

date_information = date_information[2:].replace("'", "")

Это даст вам окончательную строку, "date_information", которая должна быть датой и месяцем, разделенными запятой:

23rd, May

Наконец, вы можете разделить эту строку запятой (date_information.split(",")), чтобы получить ее в базе данных.

0 голосов
/ 20 мая 2019

Вместо использования регулярных выражений вы можете использовать split

movies=["The Big Bad Fox and Other Tales (English subtitles)('23rd', 'May')"]
splitter= movies[0].split(')(')
movie_name = f"{splitter[0]})"
date = f"({splitter[1]}"

это анализ, поэтому имейте в виду, что он будет работать только в этом стандартном формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...