[英]Extract words from string before new line
我最近问了如何从数字之前的字符串中提取单词的问题,以帮助我对一些数据进行排序。 这可以完美地工作,直到前面没有数字并且只有一个新行。
这是由 codenewbie 完成的
import re
strings = '''
Hi my name is hazza 50 test test test
Hi hazza 60 test test test
hazza 50 test test test
'''
for s in strings.split('\n'):
if s != '':
print(re.findall('(.+?)\d',s)[0])
这给
Hi my name is hazza
Hi hazza
hazza
这是完美的,但如果字符串前面没有数字而是换行,则失败
import re
strings = '''
Hi my name is hazza 50 test test test
Hi hazza 60 test test test
hazza 50 test test test
hazza hazza test test test
'''
for s in strings.split('\n'):
if s != '':
print(re.findall('(.+?)\d',s)[0])
我需要它给我
Hi my name is hazza
Hi hazza
hazza
hazza hazza
我努力了
import re
strings = '''
Hi my name is hazza 50 test test test
Hi hazza 60 test test test
hazza 50 test test test
hazza hazza
test test test
'''
while True:
try:
for s in strings.split('\n'):
if s != '':
print(re.findall('(.+?)\d',s)[0])
except IndexError:
print(s.split('/n'))
但不完全确定在哪里插入以及是否有更好的方法
任何帮助将不胜感激
编辑:
例如,我有这些刺痛
Hi my name is hazza 50 test test test
Hi hazza 60 test test test
hazza 50 test test test
hazza hazza
test test test
codenewbie 完成的代码对前三个字符串工作正常,但对最后一个字符串不工作。
我需要最后一个看起来像
Hi my name is hazza
Hi hazza
hazza
hazza hazza
您可以使用 re.match() [^\d]*
匹配任何非数字字符:
import re
strings = '''
Hi my name is hazza 50 test test test
Hi hazza 60 test test test
hazza 50 test test test
hazza hazza test test test
'''
for s in strings.splitlines():
if s != '':
print(re.match(r'[^\d]*',s)[0])
印刷:
Hi my name is hazza
Hi hazza
hazza
hazza hazza test test test
编辑:根据评论,新版本:
import re
strings = '''Hi my name is hazza 50 test test test
Hi hazza 60 test test test
hazza 50 test test test
hazza hazza
test test test
'''
for s in re.findall(r'(.*?)(?:\n\n|\n$)', strings, flags=re.S):
print(re.match(r'(.*?)(?=\d|\n)', s)[0])
印刷:
Hi my name is hazza
Hi hazza
hazza
hazza hazza
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.