[英]Splitting string at special occurrence of character
我有一个充满像这样的字符串的数据文件:
1682|Scream of Stone (Schrei aus Stein) (1991)|08-Mar-1996
我已经解析了字符串并在"|"
处进行了分割 并将其转储到列表中,所以我有:
['1682', 'Scream of Stone (Schrei aus Stein) (1991)', '08-Mar-1996']
我需要做的是进一步拆分列表中括号中围绕年份的位置1。 如果电影的标题中没有括号,我可以很容易地做到这一点,但事实并非如此。
如果下一个字符不是数字,我该如何写一些跳过括号分割的内容? 我想结束于:
['1682', 'Scream of Stone (Schrei aus Stein)', '1991', '08-Mar-1996']
一些帮助将是神奇的! 谢谢
这看起来像正则表达式的工作!
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])
这将从data[1]
的末尾删除任何形式(dddd)
字符串,并将其插入data
的下一个位置。
您可以使用正则表达式拆分:
import re
title="1682|Scream of Stone (Schrei aus Stein) (1991)|08-Mar-1996"
print re.split('\((\d+)\)', title.split("|")[1])
re.split
在正则表达式上进行拆分,即使用正则表达式作为分隔符。 如果split表达式中有捕获,则定界符也保留在split结果中,而不是被丢弃。
拆分表达式\\((\\d+)\\)
首先与文字括号\\( ... \\)
匹配。 并且其中仅匹配\\d+
位数。 但是我们也捕获数字以保留它们,因此\\((\\d+)\\)
。
您可以使用python re模块 。
>>> import re
>>> s = 'Scream of Stone (Schrei aus Stein) (1991)'
>>> re.findall('\([0-9]+\)', s)
['(1991)']
>>> re.findall('\((\d+)\)', s)
['1991']
>>>
解析完年份后。 您可以将其插入列表中想要的任何索引中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.