Python中文
首页
教程
问答
标签
搜索
登录
注册
Python在fi中查找、替换或添加字符串
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>嗨,感谢您的关注:)</p> <p>我有一个超过2500行的文本平铺,每行都包含一个视频文件的信息。其中一个标签(可以说)是监视状态,我正在寻找一种方法,将其从一个值更改为另一个值,或者在未设置的情况下添加一个新值。下面的代码可以工作,但是它必须为每个searchvalue打开和关闭文件,这意味着它非常慢。有谁能建议一种方法打开一次文件,然后一次完成所有的搜索?在</p> <p>谢谢</p> <pre><code>for x in y: print ' --> ' + x['title'].encode('utf-8') searchValue = x['movieid'] addValue = "\t_w\t1\t" checkvalue = "\t_w\t0\t" for line in fileinput.input(file, inplace=1): if searchValue in line: if checkvalue in line: line = line.replace(checkvalue, addValue) elif not addValue in line: line = line + addValue sys.stdout.write(line) </code></pre> <p>这就是我最后的结论,感谢大家的投入。在</p> ^{pr2}$ <p>编辑 我遇到了一个编码问题,该文件是用utf-8编码的,但它出错了,或者只是在搜索值为</p> <pre><code>'Hannibal - S01E01 - Ap\xe9ritif.mkv' </code></pre> <p>文件中的匹配行看起来像</p> <pre><code>_F /share/Storage/NAS/Videos/Tv/Hannibal/Season 01/Hannibal - S01E01 - Apéritif.mkv _rt 43 _r 8.4 _s 1 _v c0=h264,f0=24,h0=720,w0=1280 _IT 717ac9d _id 1671 _et Apéritif _DT 7142d53 _FT 7142d53 _A 4212,4211,2533,4216 _C T _G j|d|h|t _R GB:TV-MA _T Hannibal _U thetvdb:259063 imdb:tt2243973 _V HDTV _W 4210 _Y 71 _ad 2013-04-04 _e 1 _ai Apéritif _m 1117 </code></pre> <p>我试过了编解码器.打开和decode().encode()选项,但它总是会出错,我相信这是一行中的重音字母,因为它可以做<strong>if searchValue in line:</strong>如果行没有重音字母。这是我目前正在尝试的,但我对其他方法持开放态度。在</p> <pre><code>if os.path.isfile("/share/Apps/oversight/index.db"): newfile = "" #searchValueFix = searchValue.decode('latin-1', 'replace').encode('utf8', 'replace') #print searchValueFix #print searchValue addValue = "\t_w\t1\t" replacevalue = "\t_w\t0\t" file = open("/share/Apps/oversight/index.db", "r") for line in file: if searchValue in line: if replacevalue in line: line = line.replace(replacevalue, addValue) elif not addValue in line: line = line.replace(searchValue+"\t", searchValue+addValue) newfile = newfile + line file.close() file = open("/share/Apps/oversight/index.db", "w") file.write(newfile) file.close() newfile = "" </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>与PyNEwbie提出的方法类似,您可以将第1行写成1行:</p> <pre><code>myfile_list = open(file).readlines() outref = open(myfile, 'w') for line in myfile_list: # do something to line outref.write(line) outref.close() </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
使用Python创建一个非常大的二进制频率矩阵来运行协作过滤
2 回答
使用Python创建一张HTML网页,其中在不同颜色中重复n遍显示“Hello World”的方法
5 回答
使用Python创建一组唯一的值length L
2 回答
使用python创建不同表格的透视表
7 回答
使用python创建不和谐频道
2 回答
使用python创建不存在的多个文件夹
9 回答
使用python创建串行远程文件
9 回答
使用python创建交互式仪表板时出现问题
6 回答
使用python创建交互式绘图
7 回答
使用python创建交互式自动电子邮件
4 回答
使用Python创建价格列表
9 回答
使用python创建修改的txt文件
8 回答
使用Python创建全局变量,初始化后更改值
8 回答
使用Python创建关键字搜索词数组
8 回答
使用Python创建具有不均匀块大小/堆叠条形图的热图
5 回答
使用Python创建具有依赖于另一列的值的列
6 回答
使用Python创建具有多列的HTML表
2 回答
使用Python创建具有时间范围数据的等距数据帧
2 回答
使用Python创建具有特定顺序或属性的XML文件
3 回答
使用Python创建具有级联功能的搜索栏
3 回答