我试图仅将数字保留在方括号和文件扩展名中。 所以下面的文件:
t=int(input().rstrip())
n=[]
for i in range(t):
n.append(int(input().rstrip()))
inp=sorted(n)
f1=1
f2=2
sf=2 #sum of fibonacci
it=iter(inp)
value=next(it)
out=[None]*len(n)
maxi=max(inp)
while f2<=maxi:
f1=f1+f2
f2=f1+f2
f1=f2-f1
f2=f2-f1
if f2>value:
out[n.index(value)]=sf
try:
value=next(it)
except StopIteration:
pass
if f2%2==0:
sf=sf+f2
print(*out,sep='\n')
我想成为:
【004】ssd水电费.txt
【006】佛山市,地方cd2.txt
【022】风sf.pdf
或就像
004.txt
006.txt
022.pdf
我知道'rename's / old-exp / new-exp'命令和一点正则表达式,但是我找不到找到符合我期望的正则表达式的方法。
我尝试4.txt
6.txt
22.pdf
来替换中文字符,但是不起作用。
答案 0 :(得分:0)
您要使用以下内容:
rename 'tr/A-Za-z0-9.//cd; s/^(\d+).*(\.[a-z]+)$/$1$2/' *
(您首先要使用-n
来测试它是否符合您的要求。)
这会删除文件名中除A-Za-z0-9.
以外的所有字符,然后仅提取扩展名和开头的数字。
Unicode匹配不起作用的原因是rename
使用字节字符串,而不是Unicode字符串,因为并非所有Unix路径都保证是有效的Unicode。因此,除非您必须这样做,否则只过滤掉不需要的字节值比将它们转换为Unicode要容易得多。