python 批量过滤txt中的非中文字符
时间: 2023-10-23 20:33:05 浏览: 59
可以使用正则表达式来过滤非中文字符。以下是一个简单的 Python 示例代码:
```python
import re
def filter_chinese(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read()
pattern = re.compile(r'[^\u4e00-\u9fa5]+')
filtered_text = re.sub(pattern, '', text)
with open(file_path, 'w', encoding='utf-8') as f:
f.write(filtered_text)
```
该函数接受一个文件路径作为参数,将文件中的非中文字符过滤掉,并将结果重新写回到文件中。调用该函数即可完成批量过滤。
相关问题
python批量重命名图片
### 回答1:
你可以使用Python的os模块和re模块来批量重命名图片。
下面是一个示例代码,用于将指定文件夹中的所有JPEG文件重命名为以"image_"为前缀的序列号:
``` python
import os
import re
# 指定文件夹路径和文件名前缀
folder_path = "path/to/folder"
new_prefix = "image_"
# 获取文件夹中所有JPEG文件
files = os.listdir(folder_path)
jpeg_files = [f for f in files if re.match(r'.*\.jpg', f, re.IGNORECASE)]
# 对每个JPEG文件进行重命名
for i, file_name in enumerate(jpeg_files):
old_path = os.path.join(folder_path, file_name)
new_name = new_prefix + str(i+1) + ".jpg"
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
```
在这个示例代码中,首先指定了要操作的文件夹路径和新的文件名前缀。然后,使用`os.listdir()`函数获取文件夹中的所有文件,再使用正则表达式过滤出所有JPEG文件。最后,对每个JPEG文件进行重命名,新的文件名由指定的前缀加上一个序列号组成。
### 回答2:
Python可以使用os模块的rename函数来实现批量重命名图片。
首先,导入os模块:
import os
然后,使用os模块的listdir函数列出目标文件夹下的所有文件名:
file_list = os.listdir('目标文件夹路径')
接下来,使用for循环遍历文件夹中的每个文件名:
for old_name in file_list:
然后,使用os模块的rename函数对每个文件进行重命名:
new_name = '新文件名'
os.rename('目标文件夹路径' + old_name, '目标文件夹路径' + new_name)
最后,你可以根据具体需求,编写一个加上序号、修改文件格式等操作的代码。
示例代码如下:
import os
def rename_images():
folder_path = '目标文件夹路径'
file_list = os.listdir(folder_path)
count = 1
for old_name in file_list:
file_path = os.path.join(folder_path, old_name)
if os.path.isfile(file_path):
file_extension = os.path.splitext(old_name)[1] # 获取文件扩展名
new_name = f'new_image_{count}{file_extension}' # 根据需求修改文件名规则
new_file_path = os.path.join(folder_path, new_name)
os.rename(file_path, new_file_path)
count += 1
print('图片重命名完成!')
调用rename_images()函数即可实现批量重命名图片,并打印出完成的提示信息。注意在使用代码前,需要将'目标文件夹路径'替换为你实际的文件夹路径。
### 回答3:
使用Python批量重命名图片可以通过以下步骤实现:
1. 导入所需的模块,如os模块和shutil模块。
2. 使用os模块的listdir()函数列出指定目录下的所有文件。
3. 使用循环遍历每个文件名。
4. 使用字符串的split()方法将文件名分割为文件名和文件扩展名。
5. 创建新的文件名。可以使用格式化字符串或字符串拼接的方法。
6. 使用os模块的rename()函数重命名文件。
7. 可以在重命名过程中添加判断条件,如只重命名特定扩展名的文件。
8. 如果需要将文件移动到其他目录,可以使用shutil模块的move()函数。
以下是一个示例代码:
```python
import os
import shutil
# 定义文件夹路径
folder_path = "图片文件夹路径"
# 列出文件夹下的所有文件
file_list = os.listdir(folder_path)
# 循环遍历文件列表
for file_name in file_list:
# 获取文件扩展名
ext = os.path.splitext(file_name)[1]
# 可以添加判断条件,如只重命名特定扩展名的文件
if ext == '.jpg':
# 创建新的文件名
new_name = f"new_{file_name}"
# 将文件重命名
os.rename(os.path.join(folder_path, file_name), os.path.join(folder_path, new_name))
```
以上代码将会将指定目录下所有扩展名为.jpg的文件重命名为new_文件名的格式。你可以根据需求进行更改。如果需要将文件移动到其他目录,可以使用shutil模块的move()函数替代os.rename()函数。
Python批量获取xlsx文件中的手机号,查询第一列中的手机号归属地并保存到同文件夹下新建的的xlsx文件中
实现这个功能需要用到三个库:`openpyxl`、`phonenumbers`和`os`。
首先,使用`os`库获取当前文件夹中所有的xlsx文件,然后遍历每个文件,对每个文件进行处理。处理的过程中,首先使用`openpyxl`库读取xlsx文件中的数据,然后使用正则表达式从数据中提取出手机号码。提取出手机号码后,使用`phonenumbers`库解析手机号码,并获取归属地信息。最后,将手机号码和归属地信息保存到一个新的xlsx文件中。
下面是代码实现:
```python
import os
import re
import openpyxl
import phonenumbers
from phonenumbers import geocoder
# 获取当前文件夹中所有的xlsx文件
files = [f for f in os.listdir() if f.endswith('.xlsx')]
# 遍历每个文件
for file in files:
# 读取xlsx文件
wb = openpyxl.load_workbook(file)
sheet = wb.active
# 遍历每一行
for row in sheet.iter_rows(min_row=2):
# 获取手机号码
phone_number = ''
for cell in row:
match = re.search(r'\d{11}', str(cell.value))
if match:
phone_number = match.group()
break
# 解析手机号码
if phone_number:
try:
parsed_number = phonenumbers.parse(phone_number, 'CN')
location = geocoder.description_for_number(parsed_number, 'zh')
except phonenumbers.NumberParseException:
location = '无法解析归属地'
else:
location = '无手机号码'
# 将手机号码和归属地信息保存到新的xlsx文件中
new_file = os.path.splitext(file)[0] + '_location.xlsx'
if not os.path.exists(new_file):
wb_new = openpyxl.Workbook()
sheet_new = wb_new.active
sheet_new.append(['手机号码', '归属地'])
else:
wb_new = openpyxl.load_workbook(new_file)
sheet_new = wb_new.active
sheet_new.append([phone_number, location])
wb_new.save(new_file)
```
代码中,首先使用`os.listdir()`函数获取当前文件夹中所有的xlsx文件,然后使用列表推导式过滤出所有以`.xlsx`结尾的文件。接着,使用`openpyxl.load_workbook()`函数读取xlsx文件。读取文件后,使用`iter_rows()`方法遍历每一行数据。对于每一行数据,使用正则表达式从单元格中提取手机号码。提取出手机号码后,使用`phonenumbers.parse()`函数解析手机号码,并使用`geocoder.description_for_number()`函数获取归属地信息。最后,将手机号码和归属地信息保存到新的xlsx文件中。
需要注意的是,代码中使用了`try-except`语句捕获了`phonenumbers.NumberParseException`异常。这是因为有些字符串可能不是合法的手机号码,解析时会抛出异常。如果出现这种情况,代码会将归属地信息设置为`无法解析归属地`。
阅读全文