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

回答編集履歴

3

誤字修正

2021/01/20 22:37

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。提示されたエラーはそれが原因です。
2
2
 
3
- いっぽう、reに対して広報互換性を持つregexパッケージが存在し、こちらはUnicodeプロパティにある程度対応しています。
3
+ いっぽう、reに対して後方互換性を持つregexパッケージが存在し、こちらはUnicodeプロパティにある程度対応しています。
4
4
 
5
5
  [regex · PyPI](https://pypi.org/project/regex/)
6
6
 

2

対策を追加

2021/01/20 22:37

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,1 +1,31 @@
1
- pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。
1
+ pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。提示されたエラーはそれが原因です。
2
+
3
+ いっぽう、reに対して広報互換性を持つregexパッケージが存在し、こちらはUnicodeプロパティにある程度対応しています。
4
+
5
+ [regex · PyPI](https://pypi.org/project/regex/)
6
+
7
+ > This regex implementation is backwards-compatible with the standard ‘re’ module, but offers additional functionality.
8
+
9
+ そこで、`replace`を使う代わりに、regexで同様の処理を行なう関数`regex.subn`を`apply`で呼び出すようにすれば、Unicodeプロパティを使った置換処理を行なえます。
10
+
11
+ ```Python
12
+ import pandas as pd
13
+ import io
14
+ import regex
15
+
16
+ txt = """
17
+ BANGO
18
+ これはregexをpandasに適用するテストです。
19
+ """
20
+
21
+ df = pd.read_csv(io.StringIO(txt))
22
+ # print(df)
23
+
24
+ print(df['BANGO'].apply(lambda x: regex.subn(
25
+ r'(?:\p{Hiragana}|\p{Script=Han})+', '', x)[0]))
26
+ ```
27
+
28
+ ```result
29
+ 0 regexpandasテスト。
30
+ Name: BANGO, dtype: object
31
+ ```

1

補足を追加

2021/01/19 11:39

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,1 +1,1 @@
1
- Python標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。
1
+ pandasが利用するPython標準の正規表現モジュールreは、Unicodeプロパティ(`\p{Hiragana}`など)に対応していません。