如何解决使用正则表达式为我拥有的每一行打印
我有一个 3589 行的文本, 每 5 行我想从中提取图像名称,使用正则表达式。
该行如下所示:URL,https://google.com/Document/Projects/Images/Turk/IMG-2021-606-WA1227.jpg
我只需要打印图片名称,即:“IMG-2021-606-WA1227.jpg”
我到目前为止的代码:
file1 = open('./data/input/filesn.csv','r')
Lines = file1.readlines()
count = 0
for line in Lines:
print("Line{}: {}".format(count,line.strip()))
count += 1
if "URL" in line :
print("Image:")
- 如何在 print("Image:") 后打印图像名称
解决方法
如果你需要多次使用一个模式,最好编译它,在循环前加上pattern = re.compile('IMG.*?\.jpg')
,然后在print语句中,打印出与模式匹配的子串:
print("Image:",pattern.findall(line)[0])
理解模式'IMG.*?\.jpg'
:
- 该模式将在行中查找
IMG
文本 - 如果找到了,
.*?\.jpg
将把所有的字符串都取出来 第一次出现.jpg
的位置。 - 如果在找到
.jpg
后未找到IMG
或未找到IMG
,则表示该行与给定的正则表达式不匹配。
如果您得到 IndexError,则意味着 line
不包含与模式匹配的所需子字符串,因此最好将变量存储在本地并仅在非-时才打印第一项空:
img = pattern.findall(line)
if img:
print(img[0])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。