我正在尝试将临床试验的文本分割成一个字段列表。下面是一个例子doc:https://obazuretest.blob.core.windows.net/stackoverflowquestion/NCT00000113.txt。所需输出的形式为:[[Date:<date>],[URL:<url>],[Org Study ID:<id>],...,[Keywords:<keywords>]]
我使用re.split(r"\n\n[^\s]", text)
在以空格以外的字符开头的段落处进行拆分(以避免在字段中缩进的段落处进行拆分)。这很好,除了结果字段(第一个字段除外)都缺少第一个字符。不幸的是,不可能将string.partition
与regex一起使用。你知道吗
我可以通过使用re.findall(r"\n\n[^\s]", text)
查找第一个字符来添加回第一个字符,但这需要对整个文本进行第二次迭代(看起来很笨拙)。你知道吗
我认为将re.findall
与一些匹配所有字段的regex一起使用是有意义的,但是我被卡住了。re.findall(r"[^\s].+\n\n")
只匹配单行字段。你知道吗
我对正则表达式不是很有经验,所以如果这个问题的答案在别处很容易找到,我很抱歉。谢谢你的帮助!你知道吗
你要向前看。您还可能希望它在新行数/新行字符数方面更加灵活。你可以试试这个:
虽然这似乎会在列表中插入\r\n个字符。。。嗯
您可以使用正向先行而不是否定的字符类:
现在,如果后跟一个非空白字符,它将只匹配2个换行符。你知道吗
另外,如果可能有2行或更多的换行符,最好使用
{2,}
限制量词:参见Python demo和regex demo。你知道吗
相关问题 更多 >
编程相关推荐