teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

解決した方法の追加をしました

2022/08/10 10:43

投稿

kouki_prog
kouki_prog

スコア2

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,18 @@
40
40
  ### 補足情報(FW/ツールのバージョンなど)
41
41
  DB Browser for SQLite 3.12.2
42
42
  Python3.9
43
- (MySQLへの移行は設定時にエラーが出て頓挫しました)
43
+ (MySQLへの移行は設定時にエラーが出て頓挫しました)
44
+
45
+ ### 解決した方法
46
+ Python側で処理しました。
47
+ Pandasで読み込んで、.str.extractで切り出して、不要な列はDropしました
48
+
49
+ ```Python
50
+ # ○個セットを一時的な列に切り出し
51
+ append_df['set_str'] = append_df['商品名'].str.extract('(?P<set_str>\*[0-9]{1,3}.{0,3}セット)', expand=True)
52
+ # ○の切り出し
53
+ append_df['セット数'] = append_df['set_str'].str.extract('(?P<セット数>[0-9]{1,3})', expand=True)
54
+ # ○個セットの列のDrop
55
+ append_df.drop('set_str', axis=1,inplace=True)
56
+ ```
57
+

1

試したこと、抽出したい文字列のパターンを追記しました

2022/08/10 01:27

投稿

kouki_prog
kouki_prog

スコア2

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,11 @@
8
8
  「電球 5個セット」→「5」
9
9
  「パソコン20台セット」→「20」
10
10
 
11
+ **追記
12
+ 抽出したい文字列:「1~3桁数字 + 1~2桁単位 + セット」**
13
+
14
+ **PostgreSQLにあるような、regexp_matches関数(正規表現パターンマッチの結果捕捉された全ての部分文字列のテキスト配列を返す関数)のような機能を求めています。**
15
+
11
16
  ### 発生している問題・エラーメッセージ
12
17
 
13
18
  SQLのWHERE句に正規表現を使用可能なことは調べたのですが、SELECT句に記載すると列名と認識されてマッチ文字列が取り出せません。
@@ -28,6 +33,10 @@
28
33
  等で検索しましたが、切り出すためのコマンド等は見つかりませんでした。
29
34
  Python側で一行ずつ抜き出して文字列処理する必要があるのでしょうか?
30
35
 
36
+ **追記
37
+ GLOB句、substrとinstrを調べてみましたが、数字と単位の桁数の組み合わせは指定できませんでした
38
+ 抽出したい文字列:「1~3桁数字 + 1~2文字単位 + セット」**
39
+
31
40
  ### 補足情報(FW/ツールのバージョンなど)
32
41
  DB Browser for SQLite 3.12.2
33
42
  Python3.9