剥离数字日期,直到从字符串中找到第一个字母

Stripping numbers dates until first alphabet is found from string

我正在尝试一种有效的方法来去除数字日期或字符串中存在的任何其他字符,直到从末尾找到第一个字母表。

字符串 - '12.abd23yahoo 04/44 231'
输出 - '12.abd23yahoo'

line_inp = "12.abd23yahoo 04/44 231"
line_out = line_inp.rstrip('0123456789./') 

这个 rstrip() 调用似乎没有按预期工作,我得到的是 '12.abd23yahoo 04/44 '

我正在下面尝试,但它似乎不起作用。

for fname in filenames:
with open(fname) as infile:
    for line in infile:
        outfile.write(line.rstrip('0123456789./ '))

你也需要去除空格:

line_out = line_inp.rstrip('0123456789./ ')

演示:

>>> line_inp = "12.abd23yahoo 04/44 231"
>>> line_inp.rstrip('0123456789./ ')
'12.abd23yahoo'

你需要删除换行符并在你写之前重新添加它:

for fname in filenames:
     with open(fname) as infile:
        outfile.writelines(line.rstrip('0123456789./ \n') + "\n" 
                              for line in infile)

如果格式始终相同,您可以拆分:

with open(fname) as infile:
        outfile.writelines(line.split(None, 1)[0] + "\n" 
                              for line in infile)

这是一个使用正则表达式的解决方案:

import re    
line_inp = "12.abd23yahoo 04/44 231"
r = re.compile('^(.*[a-zA-Z])')
m = re.match(r, line_inp)
line_out = m.group(0) # 12.abd23yahoo

正则表达式匹配一组以字母结尾的任意字符。