質問編集履歴

3

追記

2017/12/06 04:48

投稿

roy29
roy29

スコア18

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,22 @@
3
3
 
4
4
 
5
5
  例えば`a = 'aaa, bbb[12, 13, 14]. ccc.'`といった文字列の角かっこに囲まれた数字を`'[12] [13] [14]'`のようにそれぞれを角かっこで囲うように変換したいです。
6
+
7
+
8
+
9
+ ---
10
+
11
+ 追記
12
+
13
+ すみません。例が不適切でした。
14
+
15
+ 今回の質問は論文の引用表記を置換したいというものでした。
16
+
17
+ http://journals.plos.org/plosmedicine/article?id=10.1371/journal.pmed.0030232
18
+
19
+
20
+
21
+ ---
6
22
 
7
23
 
8
24
 
@@ -44,6 +60,18 @@
44
60
 
45
61
  for tmp in words:
46
62
 
63
+ if re.match('[\d+]', tmp):
64
+
65
+ dic.append(tmp)
66
+
67
+ continue
68
+
69
+ if re.match('[\d+(-|–)\d+]', tmp):
70
+
71
+ dic.append(tmp)
72
+
73
+ continue
74
+
47
75
  if re.match('[\d', tmp):
48
76
 
49
77
  start = 1
@@ -52,13 +80,15 @@
52
80
 
53
81
  fin = '['+num+']'
54
82
 
55
- print(fin)
83
+ # print(fin)
56
84
 
57
85
  dic.append(fin)
58
86
 
59
87
  continue
60
88
 
89
+ # if re.match('(\d+-)?\d+]', tmp):
90
+
61
- if re.match('\d+]', tmp):
91
+ if re.match('.*\d+]', tmp):
62
92
 
63
93
  start = 0
64
94
 
@@ -66,7 +96,7 @@
66
96
 
67
97
  fin = '['+num+']'
68
98
 
69
- print(fin)
99
+ # print(fin)
70
100
 
71
101
  dic.append(fin)
72
102
 
@@ -78,7 +108,7 @@
78
108
 
79
109
  fin = '['+tmp+']'
80
110
 
81
- print(fin)
111
+ # print(fin)
82
112
 
83
113
  dic.append(fin)
84
114
 

2

編集

2017/12/06 04:48

投稿

roy29
roy29

スコア18

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- `a = '[12, 13, 14]'`といった文字列を`'[12] [13] [14]'`に変換したいです。
5
+ 例えば`a = 'aaa, bbb[12, 13, 14]. ccc.'`といった文字列の角かっこに囲まれた数字を`'[12] [13] [14]'`のようそれぞれを角かっこで囲うように変換したいです。
6
6
 
7
7
 
8
8
 
9
- 問題は単純にカンマを置換するだけではないという点です。
9
+ 問題は単純にカンマを角かっこに置換するだけではないという点です。
10
10
 
11
11
  文章中に含まれている他のカンマは置き換えたくないです。
12
12
 

1

追加

2017/12/05 08:02

投稿

roy29
roy29

スコア18

test CHANGED
File without changes
test CHANGED
@@ -25,3 +25,67 @@
25
25
 
26
26
 
27
27
  アドバイスをいただけたら幸いです。
28
+
29
+
30
+
31
+ *追記
32
+
33
+ 正規表現を使わない方法については以下のような方法で解決できました。
34
+
35
+ 引数はa.strip()です。
36
+
37
+ ```
38
+
39
+ def get_refer(words):
40
+
41
+ start = 0
42
+
43
+ dic = []
44
+
45
+ for tmp in words:
46
+
47
+ if re.match('[\d', tmp):
48
+
49
+ start = 1
50
+
51
+ num = tmp.strip('[').strip(',')
52
+
53
+ fin = '['+num+']'
54
+
55
+ print(fin)
56
+
57
+ dic.append(fin)
58
+
59
+ continue
60
+
61
+ if re.match('\d+]', tmp):
62
+
63
+ start = 0
64
+
65
+ num = tmp.strip(']')
66
+
67
+ fin = '['+num+']'
68
+
69
+ print(fin)
70
+
71
+ dic.append(fin)
72
+
73
+ continue
74
+
75
+ if start == 1:
76
+
77
+ tmp = tmp.strip(',')
78
+
79
+ fin = '['+tmp+']'
80
+
81
+ print(fin)
82
+
83
+ dic.append(fin)
84
+
85
+ else:
86
+
87
+ dic.append(tmp)
88
+
89
+ return dic
90
+
91
+ ```