Python用正则表达式删除空行
时间: 2023-07-12 20:03:49 浏览: 307
可以使用re模块的sub函数,将连续的多个空行替换成一个空行,从而删除空行。示例代码如下:
```python
import re
text = """
Hello
World
!
"""
pattern = r"\n+"
result = re.sub(pattern, "\n", text)
print(result)
```
输出结果为:
```
Hello
World
!
```
其中,`\n+`是匹配连续多个换行符的正则表达式,`sub`函数将其替换成一个换行符。注意,为了保证替换后的文本和原文本一致,需要在最后加上一个换行符。
相关问题
正则表达式不能去除空行
正则表达式主要用于匹配和处理文本字符串,但它们并不直接支持操作行尾或行间的空白,特别是空行。当你试图使用正则表达式去除字符串中的所有空行时,可能需要借助编程语言提供的额外功能或方法,因为正则表达式的语法并不包含对空白行的直接操作。
例如,在Python中,你可以这样做:
```python
import re
s = """\n\nThis is a line.\n\nAnother line.\nEmpty line.\n"""
s = re.sub(r'\n+', '\n', s) # 使用正则替换连续的换行符为单个换行符,多余的空行被去除
```
在这个例子中,`r'\n+'` 匹配一个或多个连续的换行符,`\n` 会替换成单个换行符。这样处理后,结果字符串中就不会有额外的空行了。
如果你想仅移除末尾的空行,可以尝试查找并删除字符串结尾的多余空行:
```python
s = s.rstrip('\n') # 移除字符串末尾的换行符
```
然而,如果想要完全去除字符串中的所有空行,上述方法可能不够,因为正则表达式无法跨行匹配。在这种情况下,可能需要遍历每一行并单独处理。所以,虽然正则表达式不是最佳选择,但在某些编程上下文中,结合其他方法仍然能够达到目的。
用正则表达式爬取豆瓣top250的电影,并存储在csv文件中
好的,可以使用Python的`requests`和`re`库来实现。下面是代码示例:
```python
import requests
import re
import csv
# 请求豆瓣电影top250页面
url = 'https://movie.douban.com/top250'
response = requests.get(url)
# 使用正则表达式匹配电影名称和评分
pattern = r'<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>'
results = re.findall(pattern, response.text, re.S)
# 将电影名称和评分写入csv文件
with open('douban_top250.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['电影名称', '评分'])
for result in results:
writer.writerow(result)
```
以上代码会将豆瓣电影top250页面中的电影名称和评分使用正则表达式进行匹配,然后将结果写入csv文件中。注意要使用`newline=''`参数避免写入csv文件时出现空行,以及设置`encoding='utf-8'`来避免中文乱码问题。
阅读全文