柳向城 发表于 2018-12-3 20:55

threefcata 发表于 2018-12-3 23:30

干这个我选择grep再sed,

或者vim打开,先查找X1,然后用类似

%s/X1-01/A1-01/g

的命令,几分钟完事……

RAMDA 发表于 2018-12-4 08:08

正则表达式?

—— 来自 Xiaomi MI 6, Android 8.0.0上的 S1Next-鹅版 v2.0.4

NMTor 发表于 2018-12-4 09:16

文件内容批量修改?
好压自带工具里面有个批量文件名修改我觉得还行

—— 来自 Xiaomi Mi-4c, Android 7.0上的 S1Next-鹅版 v2.0.4

lvcha 发表于 2018-12-4 09:54

pyjq 发表于 2018-12-4 10:26

我建议先学会怎么贴代码。这代码贴的,看都不想看。

win8 发表于 2018-12-4 12:33

没什么意义。Linux命令rename自带正则匹配替换。Windows重命名的专门软件也能完成批量改名(重点是能够预览后再应用,避免发生意外问题噢)。

柳向城 发表于 2018-12-4 12:51

柳向城 发表于 2018-12-4 12:53

柳向城 发表于 2018-12-4 13:21

柳向城 发表于 2018-12-4 13:24

柳向城 发表于 2018-12-4 13:24

RAMDA 发表于 2018-12-4 13:28

柳向城 发表于 2018-12-4 12:53
贴代码之后,'&#xe7a6' 会显示是方框

&#x开头的字符是什么

—— 来自 Xiaomi MI 6, Android 8.0.0上的 S1Next-鹅版 v2.0.4

pyjq 发表于 2018-12-4 13:47

提几点建议,不知道楼主学代码学了多久。
1. 变量尽量做到有意义,简洁明了。有助于后面维护,不管是本人维护还是其他人维护。像f1这种变量名,可以换成打开的文件名。另外不要用拼音命名,用英文。不会英文就用网络翻译。
2. 看lz又是open,又是close,应该还不知道Python的with表达式。可以查查,有助于代码的简洁。

乔槁 发表于 2018-12-4 13:49

本帖最后由 乔槁 于 2018-12-4 13:56 编辑

论坛可以贴代码:
package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

baka9 发表于 2018-12-4 14:00

sed -ri 's/A1-0/X1-0/g'
sed -ri 's/B1-0/X1-0/g'
sed -ri 's/C1-0/X1-0/g'
....
查找替换直接用sed就可以了

柳向城 发表于 2018-12-4 14:00

柳向城 发表于 2018-12-4 14:00

RAMDA 发表于 2018-12-4 14:13

柳向城 发表于 2018-12-4 14:00
没什么意义的事多了。

我已经发现用py查找使用的地方了

他的意思大概是你的做法复杂得没有意义

—— 来自 Xiaomi MI 6, Android 8.0.0上的 S1Next-鹅版 v2.0.4

柳向城 发表于 2018-12-4 14:14

柳向城 发表于 2018-12-4 14:15

柳向城 发表于 2018-12-4 14:18

柳向城 发表于 2018-12-4 14:20

baka9 发表于 2018-12-4 14:26

柳向城 发表于 2018-12-4 14:14
可能我表达有问题

打开一个文件,如果出现了X1


X1/X2在哪?和1234有啥关系?

柳向城 发表于 2018-12-4 14:33

モナド 发表于 2018-12-4 14:45

柳向城 发表于 2018-12-4 14:14
可能我表达有问题

打开一个文件,如果出现了X1


判断可以靠正则

经常搞字符串处理的要好好学正则,一招鲜

黑暗之凰 发表于 2018-12-4 14:52

本帖最后由 黑暗之凰 于 2018-12-4 15:10 编辑

还有建议类似数据表的内容提出来
用字典重写if else 有利于后续扩展
提取查找和转换相关独立成为函数,现有逻辑文件打开关闭2次,浪费
替换部分也是巨大的浪费, 不应该直接用replace
比如
def decode_html(file_name, target_file_name, match_table):
    with codecs.open(file_name, 'r+', 'utf-8') as f:
         htmlsource= f.read()         


随手写一下, 楼下的优化吧

我靠s1的 code有毒 贴进来编辑都丢了,不写了,再见

柳向城 发表于 2018-12-4 14:55

モナド 发表于 2018-12-4 15:00

柳向城 发表于 2018-12-4 14:55
查找的源是固定的,1234
替换目标却不固定,1234有时等于A,1234有时等于B



匹配第一种模式的不会匹配第二种,写两句替换各执行一次

baka9 发表于 2018-12-4 15:01

柳向城 发表于 2018-12-4 14:33
X1 X2是不同的编码表
X1是1编码表,1234=A,5678=Y
X2是2编码表,1234=B,5678=H

看了下你写的py,大概明白了

就像1L说的,先grep第一个条件输出file1再grep第二个条件输出file2,然后在两个文件里分别sed

柳向城 发表于 2018-12-4 15:09

threefcata 发表于 2018-12-4 15:17

柳向城 发表于 2018-12-4 12:51
sed也能实现条件判断吗?文件中有“X1定义”,那1234=A,有X2定义,那么1234=B ...

所以我说先grep呀,grep的退出状态应该能表示找没找到的,放在bash的什么if里就行了

萌名雪 发表于 2018-12-4 15:23

LZ一直在提 X-Y 问题 …

柳向城 发表于 2018-12-4 15:25

w酱 发表于 2018-12-5 00:29

你这个qa的映射数组看的我精神崩溃 ,难道不是写个配置表再套正则比较快么

tracker 发表于 2018-12-5 10:08

页: [1]
查看完整版本: #