Python用正则表达式匹配txt中含有版本信息的行,匹配上就删除该行
时间: 2024-02-28 17:53:12 浏览: 20
可以使用Python的re模块进行正则表达式匹配,然后使用文件操作函数将匹配到的行删除。
以下是一个示例代码:
```python
import re
# 定义正则表达式规则
version_pattern = r'v\d+\.\d+\.\d+'
# 打开文件进行操作
with open('file.txt', 'r') as f:
# 读取文件内容并按行划分
lines = f.readlines()
# 遍历每一行进行匹配和删除
with open('file.txt', 'w') as f:
for line in lines:
if not re.search(version_pattern, line):
f.write(line)
```
上述代码中,先定义了一个正则表达式规则,用于匹配文本中的版本信息行。然后使用文件操作函数打开文件并读取内容,按行划分成一个列表。接着遍历每一行,使用re模块进行匹配,如果匹配不到版本信息行,则将该行写入文件中。最后用文件操作函数关闭文件。
相关问题
读取1.txt当中的每一行,如果该行通过竖线分割的第二个字段中与正则表达式匹配的结果为非空,则字段作为该行的ac值,同时该行way值为空,如果该行与正则表达式匹配结果为空,则该行ac值为上一行的ac值,way值为该行第二字段的值,设初始行ac为空,将每一行的ac和way值插入数据库first当中的op表
以下是使用Python语言实现的代码:
```python
import re
import sqlite3
# 数据库连接,若数据库不存在则自动创建
conn = sqlite3.connect('first.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS op
(id INTEGER PRIMARY KEY AUTOINCREMENT, ac TEXT, way TEXT)''')
# 打开文本文件,并逐行读取
with open('1.txt', 'r', encoding='utf-8') as f:
ac = ''
for line in f:
# 使用正则表达式进行匹配
match = re.search('\|([^|]*)\|', line)
if match:
# 若匹配成功,则更新ac和way
ac = match.group(1)
way = None
else:
# 若匹配失败,则使用上一行的ac,并将该行第二字段作为way
way = re.search('\|([^|]*)$', line).group(1)
# 插入数据库
cursor.execute("INSERT INTO op (ac, way) VALUES (?, ?)", (ac, way))
# 关闭数据库连接
conn.commit()
conn.close()
```
请注意代码中的正则表达式和数据库SQL语句,如果1.txt中每行竖线分割的字段数量不一致,请先进行处理再运行此代码。
用正则表达式任意字符加**字符 构成的字符串 查找txt文本中的匹配部分 并打印输出其行数
可以使用Python语言的re模块来实现,具体代码如下:
```python
import re
# 定义正则表达式
pattern = r'.*\*\*.*'
# 打开txt文件并逐行读取
with open('text.txt', 'r') as f:
for i, line in enumerate(f):
# 使用正则表达式进行匹配
match = re.search(pattern, line)
# 如果匹配成功,则输出该行号
if match:
print(i+1)
```
其中,r'.*\*\*.*'表示匹配任意字符加两个星号加任意字符的字符串,\*表示任意字符,而\*\*表示两个星号。在读取txt文件时,使用enumerate函数可以同时获得行号和每一行的内容。如果匹配成功,则输出该行的行号加1。