我正在学习python,我想在' NUMBER:'之间捕获数据。和\ n
NUMBER:3741733552 \ n556644
变量中新行字符后面的数字,因此无法指望它捕获。
re.search(r'NUMBER:(.*?)[\n]', string_data).group(1)
我尝试上面的代码(这是错误的)是徒劳的,请帮助捕获这个数字。谢谢。
编辑:
我有一个字符串" NAME:KHAN NASEEM \ n \ n22972 LAHSER RD \ n \ n ..."我喜欢的代码
name = re.search(r'NAME:\s*(.+)', string_data)
但我得到的输出是" KHAN NASEEM \ n \ n \ n22972 LAHSER RD \ n \ n ...",但我只想要KHAN NASEEM。
\ n =字符串文字,而不是实际的新行
答案 0 :(得分:1)
你可以试试这个:
import re
s = "NUMBER: 3741733552\n556644"
final_data = re.findall('NUMBER:\s*(.*?)\n', s)
输出:
['3741733552']
答案 1 :(得分:1)
以下是我的问题解决方案。它简短,易读。你可能会变得更复杂,但我喜欢保持简单:-)。我希望这可以帮助你!
>>> import re
>>> num = 'NUMBER: 3741733552\n556644'
>>> search = re.search(r'([0-9].*)', num).group(0)
>>> print(search)
3741733552
答案 2 :(得分:1)
如果您尝试将所有字符从returnsDistinctResults
加到反斜杠后跟NAME:
个字母,请使用
n
请参阅regex demo。
<强>详情
\bNAME:\s*(.+?)(?:\\n|$)
- 字边界\b
- NAME:
子字符串NAME:
- 0+ whitespaces \s*
- 第1组:尽可能少的线条以外的一个或多个字符(.+?)
- 字符串的结尾或反斜杠后跟(?:\\n|$)
以下是Python demo:
n
注意:您应该检查如何将文本从数据库提取到Python。 import re
s = r'NAME: KHAN NASEEM\n\n22972 LAHSER RD\n\n...' # Note r'' prefix: all \ are literal backslashes here!
m = re.search(r'\bNAME:\s*(.+?)(?:\\n|$)', s)
if m:
print(m.group(1)) # => KHAN NASEEM
实际上应该是换行符。修好后,您只需使用
\n
整个单词r'\bNAME:\s*(.+)'
,0 +空格,而第1组将捕获除换行符之外的一个或多个字符,尽可能多(即该行的其余部分)。