[英]Match a specific number of characters in string and delete 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个,总是在开始处。 该文本文件包含很多行,因此我想逐步浏览每一行并将输出保存在新的文本文件中。 起始文件的名称为final.txt。 我选择的语言是python。
谢谢
什么规则告诉您“ JUN130675”是可以跳过的东西,而“ MARVEL CO”则不是? 如果可以用英语描述规则,则可以用代码描述。
例如,也许规则只是“ JUN130675”只不过是字母和数字,而“ MARVEL CO”在中间(空格)还有其他内容。 让我们用Python编写:
def fix_line(line):
if line[:9].isalnum():
return line[10:].lstrip()
else:
return line
该line[:9]
获取前9个字符, isalnum
检查所有字符都是字母还是数字。 如果是这样,则line[10:]
跳过前9个字符,而lstrip
跳过lstrip
的空格。
然后,我们将其应用于每行:
with open('input.txt') as fin, open('output.txt', 'w') as fout:
for line in fin:
fout.write(fixline(line))
或者,如果规则是必须是字母和数字,并且只能是大写字母,并且必须后跟一个空格……这是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='')
像这样运行:
python3 script.py final.txt >outfile
它产生:
MARVEL COMICS
AGE OF ULTRON HC $75.00
ALL NEW X-MEN #16 $3.99
AVENGERS AI #3 $2.99
DAREDEVIL DARK NIGHTS #4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.