![](/img/trans.png)
[英]Extracting specific elements from a list of strings and creating a new list?
[英]Extracting specific substring from a list of strings
由於缺少更好的術語,我正在嘗試合並下面的字符串-我想識別“BB”的所有示例並將它們更改為“BB”,對於“B”到“B”的所有示例都相同,並且相同對於所有 CCC 示例,以使所有類別統一。 以下是列表中所有獨特示例的列表:
array(['BB+', 'B-', 'BB', 'BB-', 'CCC+', 'N.A.', 'CCC', 'B+', 'B', None,
'BB *-', 'B- *+', 'CC *-', 'B+ *-', 'BB- *-', 'NR', 'CCC-', 'BBB-',
'B+ *+', 'BB+ *+', 'B *+', 'BB *+', 'D', 'BB+ *-', 'CCC+ *+',
'BBB', 'C *-', 'CCC+ *-', 'BB- *+', 'CCC *+', 'FLD UNKNO',
'(P)CCC+', '(P)B+', 'C', 'CCC- *-', 'BBB- *-'], dtype=object)
例如,所有 'BB+' 都將更改為 'BB'
'BB+ *+' 之類的示例相同,將僅轉換為 'BB'
我一直在使用
.str.find('BB').replace(0,'BB')
在 dataframe 的特定列上,但問題是所有 B+/-/flat 和 CCC 示例都被標識為 -1,所以我無法從那里區分。
理想的 output 將是:
BB+、BB、BB-,任何帶有 *+、*-、(P) 等的迭代都將 output 到 BB
B+、B、B-、*+、*-、(P) 等的任何迭代將 output 到 B
CCC+, CCC, CCC- 任何帶有 *+, *-, (P) 的迭代將 output 到 CCC
for i in range(len(npArr)):
if 'BBB' in npArr[i]:
npArr[i] = 'BBB'
elif 'BB' in npArr[i]:
npArr[i] = 'BB'
elif 'B' in npArr[i]:
npArr[i] = 'B'
elif 'CCC' in npArr[i]:
npArr[i] = 'CCC'
我不得不改變一些事情來完成這項工作。 首先,我將數組的 dtype 更改為dtype=str
。 我不確定這對你來說是否是一個重大變化,但否則需要更多的工作。 其次,我將數組設置為變量npArr
。
這是 output:
['BB' 'B' 'BB' 'BB' 'CCC' 'N.A.' 'CCC' 'B' 'B' 'None' 'BB' 'B' 'CC *-' 'B'
'BB' 'NR' 'CCC' 'BBB' 'B' 'BB' 'B' 'BB' 'D' 'BB' 'CCC' 'BBB' 'C *-' 'CCC'
'BB' 'CCC' 'FLD UNKNO' 'CCC' 'B' 'C' 'CCC' 'BBB']
如果lst
是您的問題列表,則此示例更改B
、 BB
和CCC
值:
import re
pat = re.compile(r"\b(?:B{1,2}|CCC)\b")
out = []
for item in lst:
if not isinstance(item, str):
out.append(item)
continue
m = pat.search(item)
if m:
out.append(m.group(0))
else:
out.append(item)
for a, b in zip(out, lst):
print(b, a, sep="\t")
印刷:
BB+ BB
B- B
BB BB
BB- BB
CCC+ CCC
N.A. N.A.
CCC CCC
B+ B
B B
None None
BB *- BB
B- *+ B
CC *- CC *-
B+ *- B
BB- *- BB
NR NR
CCC- CCC
BBB- BBB-
B+ *+ B
BB+ *+ BB
B *+ B
BB *+ BB
D D
BB+ *- BB
CCC+ *+ CCC
BBB BBB
C *- C *-
CCC+ *- CCC
BB- *+ BB
CCC *+ CCC
FLD UNKNO FLD UNKNO
(P)CCC+ CCC
(P)B+ B
C C
CCC- *- CCC
BBB- *- BBB- *-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.