python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
问题描述
今天在写爬虫爬取影评时,本来的思路把影评的标题作为文件名,将每个影评的详情内容写入到“标题.txt”文件中,直到我遇到了这个问题:

这时我突然意识到,文件名中有些字符是不能存在的,怎么解决这些问题呢?
解决问题
首先想到的就是在创建文件时去除掉这些标题中的不能用的字符,机制的我赶紧去重命名了桌面上的一个文件,试图试验出那些字符,然后,机智的微软爸爸早已洞悉了一切,

也就是说文件名中不可以包含
/ \ : * ? " < > |
这9个字符,因为考虑到直观性而且数据量不大,最简单的方法就是逐个过滤掉标题中的非法字符,即建立一个字典(这里的字典不是指python中的字典结构),对于每一个title都遍历一次,去除掉其中的非法字符,如下:
def correct_title(self, title):
error_set = ['/', '\\', ':', '*', '?', '"', '|', '<', '>']
for c in title:
if c not in error_set:
title = title.replace(c, '')
return title
如此,就使用字符串的replace()达方法到了预期效果.
总结
上述做法的主要目的是看着舒服,但实际上在使用和检索时效率不算高也不方便,具体如何做还是要看自己的需求来定.
还有就是需要注意一个点replace()是有返回值的,会返回结果,我一开始使用title.replace(c, '')没做赋值操作,结果没达到预期效果,找了一会儿才想到这个问题
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)的更多相关文章
- PHP用正则匹配字符串中的特殊字符防SQL注入
本文出至:新太潮流网络博客 /** * [用正则匹配字符串中的特殊字符] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB http:/ ...
- Python 去除列表中重复的元素
Python 去除列表中重复的元素 来自比较容易记忆的是用内置的set l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2 还 ...
- C 语言实例 - 删除字符串中的特殊字符
C 语言实例 - 删除字符串中的特殊字符 C 语言实例 C 语言实例 删除字符串中的除字母外的字符. 实例 #include<stdio.h> int main() { ]; int i, ...
- cshtml中字符串中表示特殊字符@
用“@@”表示字符串中的特殊字符@
- python去除列表中重复元素的方法
列表中元素位置的索引用的是L.index 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参考.具体如下: 比较容易记忆的是用内置的set 1 2 3 l1 = ['b','c', ...
- 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度。 2)输出字符串中第一个出现字母a的位置。 3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。 4)将字符串“hello”替换为“me”,输出新字符串。 5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。 */
namespace test4 {/* 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度. 2)输出字符串中第一个出现字母a的位置. 3)在字符串的第3个字符 ...
- Javascript转义字符串中的特殊字符处理
Web应用系统中,客户端发送请求到服务器,请求中的字符串参数,在被序列化成json过程中有些特殊字符会被空格代, 导致传递到服务器端再解析的时候,原本的输入参数就会被改变. 目前遇到的特殊字符有加号( ...
- javascript字符串中包含特殊字符问题
我们都知道,在javascript中,字符串写在单引号或者双引号之中.因为这种要求,我们有些时候一些需要的字符串不能够被javascript解析,如下: "We are "Huma ...
- Python去除文件中的空格、Tab键和回车
def stripFile(oldFile, newFile): '''remove the space or Tab or enter in a file, and output a new fil ...
随机推荐
- FreeRTOS学习笔记4:时间管理
绝对时间:abs Time相对时间:百分比% time IDLE是空闲任务. RUN_Time_State:port...()初始化一个外设提供时基单元 //具体初始化要自己操作这个定时器的分辨率高于 ...
- 普及C组第二题(8.4)
2266. 古代人的难题 (File IO): input:puzzle.in output:puzzle.out 时间限制: 1000 ms 空间限制: 60000 KB 题目: 门打开了, 里面 ...
- AcWing 859. Kruskal算法求最小生成树 稠密图
//稠密图 #include <cstring> #include <iostream> #include <algorithm> using namespace ...
- [Reversal 剧情设计] 序言
想开发一个图形游戏已经很久了,这个寒假好不容易学了一些OpenGL知识,初步具备了开发图形游戏的能力,我觉得我可以开始了.当然,我的游戏并不是冷冰冰的PVE,肯定还需要一些剧情丰富色彩. 本来我的游戏 ...
- Git - 05. git log & git show
1. 概述 有了提交, 就必须有日志 日志用处很多, 这里我就不多说了 2. 项目日志 概述 查看当前分支的 提交记录 命令 普通查看 命令 > git log 显示 commit id 包括 ...
- 转载:进程退出状态--waitpid status意义
最近遇到一个进程突然退出的问题,由于没有注册signalhandler所以没有捕捉到任何信号. 但是从log中看到init waitpid返回的status为0x008b,以前对status不是很了解 ...
- 【Vue常用指令】
目录 v-html v-text v-for v-if v-show v-bind v-on v-model 指令修饰符 计算与侦听属性 自定义属性 获取DOM元素 "@ *** Vue.j ...
- jvm字节码助记符
反编译指令 javap -c xxxx.class JVM参数设置 -xx:+<option> 开启option -xx: -<option> ...
- SVN代码迁移到GITlab
==================================================================================================== ...
- P&R 4
Floorplan 要做好fp需要掌握哪些知识和技能? 通常遇到fp问题大致的debug步骤和方法有哪些? 如何衡量fp的QA? 通常FP是做PR 最关键也最具技术含量的一个环节.相对于后续的PR步骤 ...