如何将列表中的元素分为两个元素?

时间:2019-05-20 05:27:04

标签: python regex list

我想拆分列表元素,每个元素目前由一部电影和一个日期组成,但是我现在需要将它们分开,以便可以将它们添加到数据库中

这是我尝试过的

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

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

我不确定您希望将元素放入哪种格式,但是您可以考虑相似之处,例如每个日期都以“('”开头。

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 :(得分:2)

你快到了; 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 :(得分:1)

我们可以使用三个重要的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

然后,仅修剪前两个字符并替换单引号:

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

这将为您提供最终字符串“ date_information”,该字符串应为日期和月份,并用逗号分隔:

23rd, May

最后,您可以用逗号(date_information.split(","))分割此字符串以将其放入数据库。

答案 3 :(得分:0)

您可以使用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]}"

这是解析,因此请记住,这仅适用于这种标准格式。