我有一个像这样的字符串的数据文件:
1682|Scream of Stone (Schrei aus Stein) (1991)|08-Mar-1996
我已解析字符串并在"|"
拆分并将其转储到列表中,所以我有:
['1682', 'Scream of Stone (Schrei aus Stein) (1991)', '08-Mar-1996']
我需要做的是进一步将名单中的列表拆分为年份周围的括号。如果电影的标题中没有括号,我可以很容易地做到,但事实并非如此。
如果下一个字符不是数字,我怎么写一些会跳过括号上的分裂的东西?我想最终:
['1682', 'Scream of Stone (Schrei aus Stein)', '1991', '08-Mar-1996']
一些帮助太棒了!感谢
答案 0 :(得分:2)
这看起来像正则表达式的工作!
import re
data = ['1682', 'Scream of Stone (Schrei aus Stein) (1991)', '08-Mar-1996']
def handleYear(matchobj):
data.insert(2, matchobj.group(1))
return ''
data[1] = re.sub(r'\s*\((\d+)\)$', handleYear, data[1])
这将从(dddd)
的末尾删除data[1]
格式的所有字符串,并将其插入data
中的下一个位置。
答案 1 :(得分:1)
您可以使用正则表达式拆分:
import re
title="1682|Scream of Stone (Schrei aus Stein) (1991)|08-Mar-1996"
print re.split('\((\d+)\)', title.split("|")[1])
re.split
对正则表达式进行拆分,即使用正则表达式作为分隔符。如果拆分表达式中存在捕获,则分隔符也保留在拆分结果中而不是丢弃。
拆分表达式\((\d+)\)
首先匹配文字括号\( ... \)
。并且在其中只匹配数字\d+
。但我们也会捕获数字以保留它们,因此\((\d+)\)
。
答案 2 :(得分:0)
您可以使用python re module。
>>> import re
>>> s = 'Scream of Stone (Schrei aus Stein) (1991)'
>>> re.findall('\([0-9]+\)', s)
['(1991)']
>>> re.findall('\((\d+)\)', s)
['1991']
>>>
一旦你解析了这一年。您可以将其插入列表中您想要的任何索引。