CSVファイルのテキストデータの特殊記号除去
テキストデータのdf['タイトル'] df['説明文'] df['タグ']について,
それぞれ下のコードにある特殊記号を削除したいです。
そして、処理後の確認ができるように、df['タイトル2'] df['説明文2'] df['タグ2']
として出力させる方法を教えてほしいです。
python
1import pandas as pd 2df = pd.read_csv("input.csv", encoding="utf_8") 3 4puncts = [',', '.', '"', ':', ')', '(', '-', '!', '?', '|', ';', "'", '$', '&', '/', '[', ']', '>', '%', '=', '#', '*', '+', '\', '•', '~', '@', '£', 5 '·', '_', '{', '}', '©', '^', '®', '`', '<', '→', '°', '€', '™', '›', '♥', '←', '×', '§', '″', '′', 'Â', '█', '½', 'à', '…', '\n', '\xa0', '\t', 6 '“', '★', '”', '–', '●', 'â', '►', '−', '¢', '²', '¬', '░', '¶', '↑', '±', '¿', '▾', '═', '¦', '║', '―', '¥', '▓', '—', '‹', '─', '\u3000', '\u202f', 7 '▒', ':', '¼', '⊕', '▼', '▪', '†', '■', '’', '▀', '¨', '▄', '♫', '☆', 'é', '¯', '♦', '¤', '▲', 'è', '¸', '¾', 'Ã', '⋅', '‘', '∞', '«', 8 '∙', ')', '↓', '、', '│', '(', '»', ',', '♪', '╩', '╚', '³', '・', '╦', '╣', '╔', '╗', '▬', '❤', 'ï', 'Ø', '¹', '≤', '‡', '√', ]
追記
頂いた回答をもとに、次のように実行したところこのようなエラーが出ました。
position17というのは、punctsの17個目にエラーの原因があるということでしょうか?
python
1puncts= r',|.|"|:|)|(|-|!|?|;|""|$|&|/|[|]|\>|%|=|#|*|+|\|•|~|@|£|·|_|{|}|©|^|®|`|<|→|°|€|™|›|♥|←|×|§|″|′|Â|█|½|à|…|\n|\xa0|\t|“|★|”|–|●|â|►|−|¢|²|¬|░|¶|↑|±|¿|▾|═|¦|║|―|¥|▓|—|‹|─|\u3000|\u202f|▒|:|¼|⊕|▼|▪|†|■|’|▀|¨|▄|♫|☆|é|¯|♦|¤|▲|è|¸|¾|Ã|⋅|‘|∞|«|∙|)|↓|、|│|(|»|||♪|╩|╚|³|・|╦|╣|╔|╗|▬|❤|ï|Ø|¹|≤|‡|√' 2 3def puncts_rm(s): 4 return re.sub(puncts, '', s) 5 6(省略) 7 8df["title2"] = df["title2"].apply(puncts_rm) 9print(df["title2"])
(省略) 10 df["title2"] = df["title2"].apply(puncts_rm) 11 print(df["title2"]) ~\anaconda3\lib\site-packages\pandas\core\series.py in apply(self, func, convert_dtype, args, **kwds) 3589 else: 3590 values = self.astype(object).values -> 3591 mapped = lib.map_infer(values, f, convert=convert_dtype) 3592 3593 if len(mapped) and isinstance(mapped[0], Series): pandas\_libs\lib.pyx in pandas._libs.lib.map_infer() <ipython-input-84-2b440d6a84a2> in puncts_rm(s) 1 def puncts_rm(s): ----> 2 return re.sub(puncts, '', s) 3 4 def html_tags_rm(s): 5 return re.sub(html_tags, '', s) ~\anaconda3\lib\re.py in sub(pattern, repl, string, count, flags) 190 a callable, it's passed the Match object and must return 191 a replacement string to be used.""" --> 192 return _compile(pattern, flags).sub(repl, string, count) 193 194 def subn(pattern, repl, string, count=0, flags=0): ~\anaconda3\lib\re.py in _compile(pattern, flags) 284 if not sre_compile.isstring(pattern): 285 raise TypeError("first argument must be string or compiled pattern") --> 286 p = sre_compile.compile(pattern, flags) 287 if not (flags & DEBUG): 288 if len(_cache) >= _MAXCACHE: ~\anaconda3\lib\sre_compile.py in compile(p, flags) 762 if isstring(p): 763 pattern = p --> 764 p = sre_parse.parse(p, flags) 765 else: 766 pattern = None ~\anaconda3\lib\sre_parse.py in parse(str, flags, pattern) 922 923 try: --> 924 p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0) 925 except Verbose: 926 # the VERBOSE flag was switched on inside the pattern. to be ~\anaconda3\lib\sre_parse.py in _parse_sub(source, state, verbose, nested) 418 while True: 419 itemsappend(_parse(source, state, verbose, nested + 1, --> 420 not nested and not items)) 421 if not sourcematch("|"): 422 break ~\anaconda3\lib\sre_parse.py in _parse(source, state, verbose, nested, first) 808 sub_verbose = ((verbose or (add_flags & SRE_FLAG_VERBOSE)) and 809 not (del_flags & SRE_FLAG_VERBOSE)) --> 810 p = _parse_sub(source, state, sub_verbose, nested + 1) 811 if not source.match(")"): 812 raise source.error("missing ), unterminated subpattern", ~\anaconda3\lib\sre_parse.py in _parse_sub(source, state, verbose, nested) 418 while True: 419 itemsappend(_parse(source, state, verbose, nested + 1, --> 420 not nested and not items)) 421 if not sourcematch("|"): 422 break ~\anaconda3\lib\sre_parse.py in _parse(source, state, verbose, nested, first) 643 if not item or item[0][0] is AT: 644 raise source.error("nothing to repeat", --> 645 source.tell() - here + len(this)) 646 if item[0][0] in _REPEATCODES: 647 raise source.error("multiple repeat", error: nothing to repeat at position 17
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。