我有这个旧文档,我正在帮助清理并转换为数据集。这是一项以访谈形式进行的研究,但不幸的是,进行这项研究的人包括与受访者的回答混在一起的速记。这个过程的第一步是让我将这些笔记与答案分开。然后我想创建一个.csv,其中一列包含响应,另一列包含注释。
以下是研究中当前数据的示例(来自我制作的一个小test.txt文件):
$ AKAR3NDA.S+ QRUSS/)+ A BLAJ3R
0
FIN ABIXU/BRIVNS+TELE
IB3G81S+R1.B+ QI KOPIRN /AKCENT CLN VERBS+TAM XX(010
我遇到的麻烦是使用Python的re模块来实际挑选出我正在搜索的任何正则表达式。现在我只是看看我是否可以打印单独的注释和响应来测试这个,所以我将.csv部分从我的代码中删除。这是我的代码:
1 import re
2
3 notation = r"(^\+ | \+$ | ^- | -$ | \+ BUT\b | - BUT\b | ^\$ | \$$ | ^\+\$ | \+\$$ | ^-\$ | -\$ | DRWG | QB\b | QT\b | QBF | QTF | QFR | ^= | =$ | Q a Q | QP\b | QM/Y | QF/Y | ^\* | \*$ | QU\b | Q-U | QUU | QR\b | QRR | QH\b | QS\b | QW\b | Q-W | QAP | Q-AP | QN\b | QNN | QOF | QOOF | QK\b | Q-K | QLIT | QV\b | QEM | QVL | QDG | QAMER | QHUM | QELSW | QRTR | QSMT | QOTW | QNEX | QET\b | QPOL | QRUSS | QRUM | QHUNG | QGERM | QSYN | QGL\b | QGLY | QYID | QGLE | QENG | QI GL | QANG | QI\b | ^\) | \)$ | ^\)\+ | \)\+$ | ^\)- | \)-$ | ^\)= | \)=$ | EQ | \|\| | QCF | QZZ | QZT | \.\.\.{1} | QETC | QVB | QADJ | QINF | QNOUN | /[^/]+/ | \b/ | \bCM\b | \bCLN\b | \bSC\b | \bXX\b | QQ\b | ^0\b | ^O\b | QNT | Q-T | QLAT | QTA | QNP | QMEMX | \u2721 | QED\b | QEDS | \(/[0-9]* | \([0-9]* | \(\$[0-9]* | \(\( | QEDN | OVRPMP | MISPMP | MISTD)"
4
5 notesSeparate = []
6
7 with open("test.txt") as f:
8 data = f.readlines()
9
10 for line in data:
11 newRow = []
12 notes = str(re.findall(notation, line))
13 response = str(re.sub(notation, "", line))
14 newRow.append(response)
15 newRow.append(notes)
16 notesSeparate.append(newRow)
17
18 print notesSeparate
我也意识到正则表达式很丑陋而且很长,但我不确定如何格式化它所以请任何关于它的指针也欢迎。无论如何,当我运行该文件时得到的是以下输出。
[['$ AKAR3NDA.S+ QRUSS/)+ A BLAJ3R\n', '[]'], ['0\n', '[]'], ['FIN
ABIXU/BRIVNS+TELE\n', '[]'], ['IB3G81S+R1.B+KOPIRN /AKCENTVERBS+TAM
XX(010', "[' QI ', ' CLN ']"]]
我想得到的是:
[['AKAR3NDA.S+ A BLAJ3R\n', ('$', 'QRUSS/)+')], ['0\n', ('')], ['FIN
ABIXU/BRIVNS+TELE\n', ('')], ['IB3G81S+R1.B+KOPIRN /AKCENTVERBS+TAM',
(' QI ', ' CLN ', 'XX(010')]]
我知道这一切都是如此混乱,但这就是重点 - 我正在尝试采取一些超级混乱的东西并使其不那么重要。我不能告诉你我多么欣赏一些方向。
答案 0 :(得分:0)
我不知道这是否是您正在寻找的东西,但这至少应该是
运行更快 - 如果你关心的话。
它可能不会让它变得更容易管理。
顺便说一句,我认为你的正则表达式是扩展(即忽略空格)。
另外,为什么这个特定的代码点\u2721 ✡ STAR OF DAVID
?
(?:(?:^(?:\$|\)[+=-]?|\*|\+\$?|-\$?|[O0]\b|=))|(?:(?:\$|\)[+=-]?|\*|\+\$?|-|=)$)|Q[BHKNPRSTUVW]\b|(?:(?:[+-]BUT|Q(?:E[DT]|GL|[IQ]))\b)|(?:\b(?:/|(?:C(?:LN|M)|SC|XX)\b))|\|{2}|\.{3}|/[^/]+/|\(/\d*|\(\d*|\(\$\d*|\(\(|-\$|\u2721|(?:DRWG|EQ|MIS(?:PMP|TD)|OVRPMP|Q(?:-(?:AP|[KTUW])|A(?:DJ|MER|NG|P)|BF|CF|DG|E(?:D[NS]|LSW|M|NG|TC)|F(?:/Y|R)|G(?:ERM|L[EY])|HU(?:M|NG)|I(?:GL|NF)|L(?:AT|IT)|M(?:/Y|EMX)|N(?:EX|OUN|[NPT])|O(?:F|OF|TW)|POL|R(?:R|TR|U(?:M|SS))|S(?:MT|YN)|T[AF]|UU|V[BL]|YID|Z[TZ]|aQ)))
格式化
(?:
(?:
^
(?:
\$
| \) [+=-]?
| \*
| \+\$?
| -\$?
| [O0] \b
| =
)
)
| (?:
(?: \$ | \) [+=-]? | \* | \+\$? | - | = )
$
)
| Q [BHKNPRSTUVW] \b
| (?:
(?:
[+-] BUT
| Q
(?: E [DT] | GL | [IQ] )
)
\b
)
| (?:
\b
(?:
/
| (?:
C
(?: LN | M )
| SC
| XX
)
\b
)
)
| \|{2}
| \.{3}
| / [^/]+ /
| \(/ \d*
| \( \d*
| \(\$ \d*
| \(\(
| -\$
| \u2721
| (?:
DRWG
| EQ
| MIS
(?: PMP | TD )
| OVRPMP
| Q
(?:
-
(?: AP | [KTUW] )
| A
(?: DJ | MER | NG | P )
| BF
| CF
| DG
| E
(?: D [NS] | LSW | M | NG | TC )
| F
(?: /Y | R )
| G
(?: ERM | L [EY] )
| HU
(?: M | NG )
| I
(?: GL | NF )
| L
(?: AT | IT )
| M
(?: /Y | EMX )
| N
(?: EX | OUN | [NPT] )
| O
(?: F | OF | TW )
| POL
| R
(?:
R
| TR
| U
(?: M | SS )
)
| S
(?: MT | YN )
| T [AF]
| UU
| V [BL]
| YID
| Z [TZ]
| aQ
)
)
)