Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串中找到第一个字母之前的日期_Python_Strip - Fatal编程技术网

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