python正则去除所有html标签只保留内容写入到csv
时间: 2023-09-22 20:15:24 浏览: 62
可以使用Python中的re模块和csv模块来实现这个功能。
首先,我们需要读取HTML文件并使用正则表达式删除所有HTML标签。然后,我们将清理后的文本写入CSV文件中。
下面是一个示例代码:
```python
import re
import csv
# 读取HTML文件
with open('example.html', 'r', encoding='utf-8') as f:
html_text = f.read()
# 删除HTML标签
clean_text = re.sub('<.*?>', '', html_text)
# 将清理后的文本写入CSV文件中
with open('example.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['Content'])
writer.writerow([clean_text])
```
在这个例子中,我们首先使用`open()`函数打开HTML文件并使用`read()`方法读取其内容。然后,我们使用`re.sub()`函数和正则表达式`'<.*?>'`删除所有HTML标签。
最后,我们使用`csv.writer()`函数将清理后的文本写入CSV文件中,其中`writerow()`函数用于写入一行数据,`newline=''`参数用于避免在Windows系统上出现多余的空行。
相关问题
python词频统计结果写入csv,Python中CSV列的词频
可以使用Python中的`csv`和`collections`库来实现词频统计并将结果写入CSV文件。
首先,需要读取文本文件并将其转换为单词列表。可以使用正则表达式和字符串方法来实现:
```python
import re
with open('file.txt', 'r') as f:
words = re.findall(r'\b\w+\b', f.read().lower())
```
接下来,使用`collections`库中的`Counter`类来计算每个单词的出现次数:
```python
from collections import Counter
word_counts = Counter(words)
```
然后,将结果写入CSV文件。可以使用`csv`库中的`writerow`方法来逐行写入数据:
```python
import csv
with open('word_counts.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Word', 'Count'])
for word, count in word_counts.items():
writer.writerow([word, count])
```
最后,将上述代码整合成一个完整的程序:
```python
import re
from collections import Counter
import csv
with open('file.txt', 'r') as f:
words = re.findall(r'\b\w+\b', f.read().lower())
word_counts = Counter(words)
with open('word_counts.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Word', 'Count'])
for word, count in word_counts.items():
writer.writerow([word, count])
```
以上代码将每个单词及其出现次数写入CSV文件中的两列。
python请用正则表达式获取学生姓名、学号存入CBC.csv中。
假设学生姓名和学号的格式为“姓名:学号”,可以使用正则表达式来匹配并提取信息。以下是一个示例代码:
```python
import re
import csv
# 定义正则表达式
pattern = r'(\w+):(\d+)'
# 读取文本文件
with open('students.txt', 'r') as f:
content = f.read()
# 使用正则表达式提取信息
matches = re.findall(pattern, content)
# 将提取的信息写入 CSV 文件
with open('CBC.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '学号'])
writer.writerows(matches)
```
在上面的代码中,我假设学生姓名和学号之间使用冒号分隔。首先定义了一个正则表达式,使用 `re.findall` 函数匹配文本中所有符合模式的字符串,并将结果存储在 `matches` 变量中。然后使用 `csv.writer` 将匹配结果写入到 CSV 文件中。