匹配字符串中特定数量的字符并删除python

2024-04-27 03:50:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含许多行的文本文件。有些行以特定数量的字符开头。我想找到包含那个数字的字符集,然后删除它们和后面的空格。下面是一个列表示例。在

MARVEL COMICS

JUN130675   AGE OF ULTRON HC    $75.00
JUL130663   ALL NEW X-MEN #16   $3.99
JUL130606   AVENGERS AI #3  $2.99
JUL130642   DAREDEVIL DARK NIGHTS #4 

我想在字符串的开头找到9个字符,然后删除它们加上空格。总有9个,而且总是在开头。这个文本文件包含许多行,所以我希望逐行遍历每一行并将输出保存到一个新的文本文件中。起始文件名为最终.txt. 我选择的语言是python。在

谢谢


Tags: ofhc示例列表age数量数字字符
2条回答

什么规则告诉你“JUN130675”是可以跳过的,而“MARVEL CO”不是?如果你能用英语描述规则,你就可以用代码来描述它。在

例如,也许规则是“JUN130675”只是字母和数字,而“mavel CO”中间有其他东西(空格)。让我们用Python编写:

def fix_line(line):
    if line[:9].isalnum():
        return line[10:].lstrip()
    else:
        return line

line[:9]得到前9个字符,^{}检查所有字符是否为字母或数字。如果是这样,line[10:]将跳过前9个字符,^{}将跳过它们后面的空格。在

然后我们把它应用到每一行:

^{pr2}$

或者,如果规则是它必须是字母和数字,并且只有大写字母,并且后面必须跟一个空格……这是Python中由and连接的三个条件,就像在英语中一样,所以这样写:

def fix_line(line):
    if line[:9].isalnum() and line[:9] == line[:9].upper() and line[9:10].isspace():
        # everything else is the same

一种使用正则表达式的方法。这将明确地找到您想要缩短的行,方法是丢弃初始单词,而不改变其他单词。在

import fileinput
import re

for line in fileinput.input():
    print(re.sub(r'^\w{3}\d{6}\s+', '', line), end='')

运行方式如下:

^{pr2}$

它产生:

MARVEL COMICS

AGE OF ULTRON HC        $75.00
ALL NEW X-MEN #16       $3.99
AVENGERS AI #3  $2.99
DAREDEVIL DARK NIGHTS #4

相关问题 更多 >