使用 python 正则表达式获取 raw_text 的两个换行符 (\n) 之间的所有文本
get all the text between two newline characters(\n) of a raw_text using python regex
所以我有几个原始文本示例,其中我必须提取 'Terms' 之后的字符。我看到的常见模式是在单词 'Terms' 之后有一个 '\n' 并且在末尾 '\n' 我想将这些之间存在的所有字符(单词,数字,符号)提取到 \n但在关键字 'Terms'.
之后
部分文字示例如下:
1) \nTERMS \nDirect deposit; Routing #256078514, acct. #160935\n\n'
2) \nTerms\nDue on receipt\nDue Date\n1/31/2021
3) \nTERMS: \nNET 30 DAYS\n
我写的代码如下:
def get_term_regex(s):
raw_text = s
term_regex1 = r'(TERMS\s*\n(.*?)\n)'
try:
if ('TERMS' or 'Terms') in raw_text:
pattern1 = re.search(term_regex1,raw_text)
#print(pattern1)
return pattern1
except:
pass
但是我没有得到任何输出,因为没有匹配项。
预期输出为:
1) Direct deposit; Routing #256078514, acct. #160935
2) Due on receipt
3) NET 30 DAYS
任何帮助将不胜感激。
尝试以下操作:
import re
text = '''1) \nTERMS \nDirect deposit; Routing #256078514, acct. #160935\n\n'
2) \nTerms\nDue on receipt\nDue Date\n1/31/2021
3) \nTERMS: \nNET 30 DAYS\n''' # \n are real new lines
for m in re.finditer(r'(TERMS|Terms)\W*\n(.*?)\n', text):
print(m.group(2))
请注意,您的正则表达式无法处理第三个 'line',因为 TERMS
之后有一个冒号 :
。所以我用 \W
.
替换了 \s
('TERMS' or 'Terms') in raw_text
可能不是您想要的。它不会引发语法错误,但它与 'TERMS' in raw_text
相同;当python计算括号部分时,'TERMS'
和'Terms'
都是truthy,因此python只取最后一个truthy值,即 'Terms'
。结果是,TERMS
无法被那部分拾取!
所以你可能想要像 ('TERMS' in raw_text) or ('Terms' in raw_text)
这样的东西,尽管它很冗长。
所以我有几个原始文本示例,其中我必须提取 'Terms' 之后的字符。我看到的常见模式是在单词 'Terms' 之后有一个 '\n' 并且在末尾 '\n' 我想将这些之间存在的所有字符(单词,数字,符号)提取到 \n但在关键字 'Terms'.
之后部分文字示例如下:
1) \nTERMS \nDirect deposit; Routing #256078514, acct. #160935\n\n'
2) \nTerms\nDue on receipt\nDue Date\n1/31/2021
3) \nTERMS: \nNET 30 DAYS\n
我写的代码如下:
def get_term_regex(s):
raw_text = s
term_regex1 = r'(TERMS\s*\n(.*?)\n)'
try:
if ('TERMS' or 'Terms') in raw_text:
pattern1 = re.search(term_regex1,raw_text)
#print(pattern1)
return pattern1
except:
pass
但是我没有得到任何输出,因为没有匹配项。
预期输出为:
1) Direct deposit; Routing #256078514, acct. #160935
2) Due on receipt
3) NET 30 DAYS
任何帮助将不胜感激。
尝试以下操作:
import re
text = '''1) \nTERMS \nDirect deposit; Routing #256078514, acct. #160935\n\n'
2) \nTerms\nDue on receipt\nDue Date\n1/31/2021
3) \nTERMS: \nNET 30 DAYS\n''' # \n are real new lines
for m in re.finditer(r'(TERMS|Terms)\W*\n(.*?)\n', text):
print(m.group(2))
请注意,您的正则表达式无法处理第三个 'line',因为
替换了TERMS
之后有一个冒号:
。所以我用\W
.\s
('TERMS' or 'Terms') in raw_text
可能不是您想要的。它不会引发语法错误,但它与'TERMS' in raw_text
相同;当python计算括号部分时,'TERMS'
和'Terms'
都是truthy,因此python只取最后一个truthy值,即'Terms'
。结果是,TERMS
无法被那部分拾取!所以你可能想要像
('TERMS' in raw_text) or ('Terms' in raw_text)
这样的东西,尽管它很冗长。