Python 从字符串中找到第一个字母之前的日期
我正在尝试一种有效的方法来剥离数字、日期或字符串中的任何其他字符,直到从末尾找到第一个字母 字符串-Python 从字符串中找到第一个字母之前的日期,python,strip,Python,Strip,我正在尝试一种有效的方法来剥离数字、日期或字符串中的任何其他字符,直到从末尾找到第一个字母 字符串-“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 fnam
“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./ ')
演示:
在编写以下内容之前,您需要删除换行符并再次添加:
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
正则表达式匹配以字母结尾的一组任意字符。谢谢@Martijn Pieters。我正试图从文件中读取该行并输出转换后的文本,但不知何故它不起作用。在字符中包含
\n
:rstrip('0123456789./\n')
@yatri:听起来你也有新行。将\n
添加到剥离字符。请始终使用repr(line_inp)
测试您的输入,以使这些字符更清晰可见。谢谢@Padraic。我不想剥离newline,因为它会将所有内容放在一起,并将数据弄乱。我希望每一行单独完成,因为每一行都是一个单独的实体。谢谢。但格式不同,因为行中的文本可以是任意长度的,并且在它们之间有多个空格和空格号。尝试仅删除最后一个字母表后的数字。例如,对于此字符串/sa/.0e0770h.Test Main 2nd 01/21 3.21输出应为“/sa/.0e0770h.Test Main 2nd”。不管怎样,第一个代码都可以工作,您只需在将新行剥离后将其添加回即可。谢谢,这个reg_exp工作得很好,但是当我使用文件读取器时,我得到了一个错误AttributeError:'NoneType'对象没有属性'group'm是None,当行与此模式不匹配时。你只需要检查一下:如果m==None:继续
@Andreas非常感谢你。
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