首页 > 解决方案 > 从字符串中提取换行符文本

问题描述

我有如下所述的字符串:

string=" (2021-07-04 11:58:43 PM BST)
--- len (Tradition ) 对 sen Hi yohan 说

(2021-07-05 12:04:42 AM BST)
--- len(传统)对 yohan 说好的 -5 / 0 。

(2021-07-04 11:47:14 PM BST)
--- Ke Ch 对 Hano 说你好

(2021-07-05 12:09:41 AM BST)
--- len 对 yohan sen 说是 -5 / 0 TN -- / +2.5



Processed by wokl Archive for son malab | 2021-07-05 12:26:44 AM
BST  
---"

我只想在时间戳之后和之前提取文本。

预期输出为:

text=['yohan sen Hi yohan','yohan sen okay -5 / 0 ','Han Cho hello','sen yes -5 / 0 TN -- / +2.5']

我试过的:

text=re.findall(r'\bsays to (.*(?:\n(?!\(\d|---).*?)*?)\s*\n(?:\(\d|---)', string)

标签: pythonregexstring

解决方案


使用您显示的示例,请尝试遵循 Python 代码。用 Python3 编写和测试。

import re
##Create variable here string with user's values, since variable is too long so mentioning it as a comment here....
var1 = re.findall(r'says\s+[^(]*',string,re.M)

上面将创建一个名为的列表var1,其元素将在每个元素的最后有新行,因此要删除它们,请使用以下代码。在这里使用stripPython 的功能。

var1 = list(map(lambda s: s.strip(), var1))

现在打印列表的所有元素var1

for element in var1:
    print (element)

说明:正则表达式的解释很简单,使用re.findallPython3 的函数并提到正则表达式来匹配says\s+[^(]*意味着在下一次/第一次出现 ( 这里.


推荐阅读