繁体   English   中英

在出现特殊字符时分割字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM