掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 790|回复: 4

[求助] 关于文件完整路径的正则提取

[复制链接]

该用户从未签到

发表于 2020-3-16 11:17:05 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2020-3-16 11:21 编辑 & Q3 e0 L- A3 I/ W2 ?

# n9 T; ^8 C& h5 B文件内容共4行,存储内容为文件的地址(pdf和.7z格式)和网页链接。. ?) }# G, @- c  H, e
目标是:提取每个PDF文件的全名(形如abc.pdf等)及其前一项的ID(文件名前面一项,形如BUUXZJBF,BZ7QHC8S等8位数的ID标签)。  a, ~/ M* c: S. T( }
由于,1.文件名中有特殊符号"\;", 2.里面混杂了.7z文件。我在python re 下没有成功提取,请大家出手相助。注:只需提供正则表达式即可。谢谢6 S6 e8 t3 Y. d  |  g

. p% E$ a8 y* c& ?( D, ?file = {E\:\\storage\\BUUXZJBF\\Kottwitz - 2011 - Xyz beginner's guide \; one book name .pdf},
% r. o- O  U% f8 s$ afile = {E\:\\storage\\BZ7QHC8S\\Xyz programming - an introduction..pdf;E\:\\storage\\I5CN6Q4Y\\ABC Programming Advanced Introduction.7z;E\:\\storage\\LIEKLY4B\\NO programming - an advanced introduction chs..pdf;E\:\\storage\\4UVU3D66\\www.ccc-intro.org.html},4 F. l9 z8 X7 t- x
howpublished = {http://www.123.org/}, S+ h$ v5 |$ f: N; S" L
file = {E\:\\storage\\CUUXZJBG\\Tomz - 2015 - OK beginner's guide another book name.pdf}

该用户从未签到

发表于 2020-3-16 11:46:42 | 显示全部楼层
: p% }1 ?' ]% G7 d& ?! \* C8 P
8 C3 g( s8 v  b0 P; F
  1. import re
    $ T5 m5 i8 h1 R; [( G; [( n5 h5 }
  2. 6 z2 E1 S5 Y. Y: l& i
  3. string = """file = {E\:\\storage\\BUUXZJBF\\Kottwitz - 2011 - Xyz beginner's guide \; one book name .pdf},
    , [$ @! h2 P" v2 [
  4. file = {E\:\\storage\\BZ7QHC8S\\Xyz programming - an introduction..pdf;E\:\\storage\\I5CN6Q4Y\\ABC Programming Advanced Introduction.7z;E\:\\storage\\LIEKLY4B\\NO programming - an advanced introduction chs..pdf;E\:\\storage\\4UVU3D66\\www.ccc-intro.org.html},
    1 P4 ?( ]7 O) h2 {3 L: i
  5. howpublished = {http://www.123.org/}
    - @4 @- B% x& J; X
  6. file = {E\:\\storage\\CUUXZJBG\\Tomz - 2015 - OK beginner's guide another book name.pdf}"""
    % T/ }: A2 @' I2 m

  7. $ ?% {* q3 Q8 c
  8. ; L8 l1 c+ i: {7 r# Q, i; E
  9. pattern = re.compile(r"\\([0-8A-Z]{8})\\([^:}]+?\.pdf)"); {; _5 q! H4 m3 ~% T

  10. : N, j2 n! i4 A  p- k4 X1 _
  11. m = pattern.findall(string)5 V! }! B- |$ m3 S0 A
  12. 5 r4 R0 x7 y8 o' {6 K! x
  13. for item in m:
    ; H1 `4 S/ o% G, P
  14.     print(item)
复制代码

3 u, g6 T& x* k; V) Q
, P" v$ O4 W/ X( n# U输出
6 Q7 E: [) M$ I0 {5 Y, I
1 K/ M$ n5 ?- U+ V3 g5 x# R
  1. ('BUUXZJBF', "Kottwitz - 2011 - Xyz beginner's guide \\; one book name .pdf")
    ( [& B& H0 C. ?, o1 q( f
  2. ('BZ7QHC8S', 'Xyz programming - an introduction..pdf')
    6 L9 s# F5 x9 p: `
  3. ('LIEKLY4B', 'NO programming - an advanced introduction chs..pdf')
    ; `1 A* m! U8 q" u! F: q
  4. ('CUUXZJBG', "Tomz - 2015 - OK beginner's guide another book name.pdf")
复制代码

5 Q3 A* O/ n$ m" c5 r
8 E, C3 ?/ Z9 |2 C7 w

评分

1

查看全部评分

该用户从未签到

 楼主| 发表于 2020-3-16 17:51:07 | 显示全部楼层
本帖最后由 dongzhi1980 于 2020-3-16 18:17 编辑
4 W$ b( k: `) X" T. ^* E; J) s
Oeasy 发表于 2020-3-16 11:46% D* B3 N! u) ^$ X6 w# C
输出
# a4 D6 r* o( M# s( t
谢谢O大的详细解答,请问,
2 Q2 k- @* z; K. V) w文件名中多余的“\”怎么去除,真实文件名是"Kottwitz - 2011 - Xyz beginner's guide ; one book name .pdf"。
% j# Y5 c, O6 T- r生成的字符串 '\\Kottwitz - 2011 - LaTeX beginner\'s guide \\; create high-quality and .pdf' 中
+ V! X2 g9 s0 m5 D  h3 g/ u  b7 B
多余的"\"导致程序后续操作产生问题。
! E! l! a+ s/ F5 U+ l7 ~  |3 U9 {  p; [
0 d7 R2 Z& h  I+ _6 h
6 d2 ~# @7 U" G3 j5 X( `- }

该用户从未签到

发表于 2020-3-16 18:36:51 | 显示全部楼层
dongzhi1980 发表于 2020-3-16 17:510 `  X: y  _8 B9 K# W
谢谢O大的详细解答,请问,
& ~! H! {7 v+ f, z7 n- m  V文件名中多余的“\”怎么去除,真实文件名是"Kottwitz - 2011 - Xyz beginner' ...
* W& m( X6 T9 T/ }  H# q

+ U- s, ]: c0 @2 k' C0 ]6 H! ^+ v) ?" ^& |
抱歉手抖吧 0-9 敲成 0-8 了。+ [% w, b! Q4 [6 a

* |1 }! K, w! M3 q9 H" B
  1. import re
    - Z' T7 E2 {8 f( e: B* _, `* N

  2. # P2 O6 B' k7 P3 K8 ^: E$ p' w
  3. string = """file = {E\:\\storage\\BUUXZJBF\\Kottwitz - 2011 - Xyz beginner's guide \; one book name .pdf},$ v+ N1 {$ {, @, u8 z
  4. file = {E\:\\storage\\BZ7QHC8S\\Xyz programming - an introduction..pdf;E\:\\storage\\I5CN6Q4Y\\ABC Programming Advanced Introduction.7z;E\:\\storage\\LIEKLY4B\\NO programming - an advanced introduction chs..pdf;E\:\\storage\\4UVU3D66\\www.ccc-intro.org.html},
    ) w' d7 A$ E1 f( F
  5. howpublished = {http://www.123.org/}
    6 r; n" c& n( I7 g7 |- e
  6. file = {E\:\\storage\\CUUXZJBG\\Tomz - 2015 - OK beginner's guide another book name.pdf}
    / T& Z/ b8 Y. x( [
  7. file = {E\:\\Data\\storage\\2MTGE89K\\Matlab users guide_Symbolic Math Toolbox.pdf;E\:\\Data\\storage\\CS58DYJW\\Matlab users guide_Parallel Computing Toolbox.pdf;E\:\\Data\\storage\\IAR9VKWB\\Matlab Programming Fundamentals.pdf;E\:\\Data\\storage\\RV3RTI3V\\Matlab Mathematics.pdf}"""# Q1 E/ H: ~3 L' U. A
  8. % [7 d* u( ?, D( c  o/ H4 u

  9. 8 W2 F, g3 Z; X1 Y7 c# u
  10. pattern = re.compile(r"\\([0-9A-Z]{8})\\([^:}]+?\.pdf)")
    + M; V$ R% R; [0 S% ~; u

  11. & T2 I  l* `- u# w
  12. m = pattern.findall(string)* w: y0 _& s' g# g" r, w

  13. 6 z7 ?  I- {! {6 S. N
  14. for item in m:
    * e& g) ^' z- F( S. U
  15.     print(item[0], item[1].replace("\",""))
复制代码
0 X/ k, Y; v+ T% s) Y1 v
输出+ H3 W7 z7 B9 s- I( A1 b
* C8 _5 X% n/ B7 f$ D
  1. BUUXZJBF Kottwitz - 2011 - Xyz beginner's guide ; one book name .pdf' m. }& ^3 B, x6 ~
  2. BZ7QHC8S Xyz programming - an introduction..pdf  D7 y1 g; h" l' L( k" k
  3. LIEKLY4B NO programming - an advanced introduction chs..pdf
    / W( E/ X6 U+ I& b7 Z! i
  4. CUUXZJBG Tomz - 2015 - OK beginner's guide another book name.pdf
    6 E1 e+ m( M2 U, V0 G
  5. 2MTGE89K Matlab users guide_Symbolic Math Toolbox.pdf
    8 |! n( _( Z+ `! u! K# B% c/ _, F
  6. CS58DYJW Matlab users guide_Parallel Computing Toolbox.pdf
    % h$ v- E3 @4 Q* i& ]+ i
  7. IAR9VKWB Matlab Programming Fundamentals.pdf
    2 v1 H3 x# a7 y. b4 u' o
  8. RV3RTI3V Matlab Mathematics.pdf
复制代码
) e5 Q) M. |1 w! c1 D9 c" f

# n# R- ~# S0 M  Q6 D- ?! z2 k: C/ ~

该用户从未签到

 楼主| 发表于 2020-3-16 19:36:27 | 显示全部楼层
本帖最后由 dongzhi1980 于 2020-3-16 20:21 编辑
% {3 x3 u/ Q" N
Oeasy 发表于 2020-3-16 18:36
3 L9 L3 M+ @# T. L# [: m抱歉手抖吧 0-9 敲成 0-8 了。
3 F' [% f8 D6 N
再次感谢,0-8 的问题我自己仔细查看后给解决了,正想着“挖坑不填”的含意呢,正好收到回复了。意外的惊喜。) [/ z1 U! ^+ Q: g% \. D) d
最后再麻烦你一次,如果不用 “:}” 排除,改为用 “E\:” 和 “}” 排除,用什么方法呢,在网上查了很多关于断言的操作,但还是不会用。
3 a! j$ j+ ~5 L谢谢!
1 \, X7 s  b; x1 o& z3 D% Y
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

小黑屋|手机版|Archiver|PDAWIKI |网站地图

GMT+8, 2024-4-24 09:17 , Processed in 0.047650 second(s), 13 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表