我想拆分列表元素,每个元素目前由一部电影和一个日期组成,但是我现在需要将它们分开,以便可以将它们添加到数据库中
这是我尝试过的
InvalidationListener
movies=["The Big Bad Fox and Other Tales (English subtitles)('23rd', 'May')"]
我该如何解决这个问题?
答案 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]}"
这是解析,因此请记住,这仅适用于这种标准格式。