python正则表达式匹配csv
时间: 2023-10-13 13:19:04 浏览: 215
可以使用Python内置的re模块和csv模块来实现正则表达式匹配csv格式的文件。下面是一个例子:
假设有一个csv文件,其中每行数据的格式为:`"日期","城市","温度"`,例如:
```
"2022-01-01","北京",3
"2022-01-01","上海",10
"2022-01-02","北京",1
"2022-01-02","上海",8
```
现在我们想要匹配出所有城市是北京的数据,可以使用正则表达式和csv模块来实现。
```python
import re
import csv
# 定义正则表达式
pattern = re.compile(r'^"(.*)","北京",(.*)$')
# 打开csv文件
with open('data.csv', 'r') as f:
reader = csv.reader(f)
# 遍历每一行数据
for row in reader:
# 使用正则表达式匹配
match = pattern.match(','.join(row))
if match:
# 如果匹配成功,输出结果
print(f'{match.group(1)} {match.group(2)}')
```
运行以上代码,输出结果如下:
```
2022-01-01 3
2022-01-02 1
```
相关问题
Python 用正则表达式清洗csv文件数据
在Python中,使用正则表达式(RegEx)清洗CSV文件数据通常涉及读取文件,使用内置函数或第三方库如pandas进行数据处理,然后使用re模块对特定字段进行模式匹配和替换。下面是一个简单的步骤示例:
1. **导入所需库**:
首先,我们需要导入 `pandas` 库用于处理CSV文件,以及 `re` 模块来使用正则表达式。
```python
import pandas as pd
import re
```
2. **读取CSV文件**:
使用 `read_csv` 函数从CSV文件中加载数据到一个DataFrame对象。
```python
df = pd.read_csv('your_file.csv')
```
3. **选择需要清洗的列**:
确定你要应用正则表达式的列名,例如 `'column_name'`。
```python
column_to_clean = 'column_name'
```
4. **使用正则表达式清洗数据**:
创建一个函数,利用 `re.sub` 函数替换不合适的字符。例如,如果你想移除所有非数字字符:
```python
def clean_column(val):
return re.sub(r'\D', '', val)
```
5. **应用清洗函数**:
对选定的列应用清洗函数,结果存储在一个新的列中,或者直接覆盖原始列(视情况而定)。
```python
df[column_to_clean] = df[column_to_clean].apply(clean_column)
```
6. **保存清洗后的文件**:
你可以再次保存清洗后的DataFrame为CSV文件。
```python
df.to_csv('cleaned_file.csv', index=False)
```
注意,这只是一个基础的例子,实际清洗过程可能会更复杂,比如处理复杂的模式匹配或嵌套的清洗需求。记得在清洗前备份原始文件,以防意外。
用正则表达式读取csv文件的第一列数据
可以使用以下正则表达式来读取csv文件的第一列数据:
```python
import re
with open('file.csv', 'r') as f:
data = f.read()
first_column = re.findall(r'^([^,]+),', data, re.MULTILINE)
print(first_column)
```
解释一下正则表达式:
- `^` 匹配行的开始位置
- `[^,]+` 匹配除逗号以外的一个或多个字符
- `,` 匹配逗号
所以 `r'^([^,]+),'` 匹配每行的第一个逗号之前的内容,也就是第一列数据。使用 `re.MULTILINE` 标志可以使 `^` 匹配每行的开始位置。最后使用 `re.findall()` 函数来查找所有匹配的结果。
阅读全文