python - 删除数据集中的符号
问题描述
我应用了所有预处理步骤,但我想删除包含英文单词或特定符号的行,只是我想要没有这些符号的阿拉伯语单词或我在下面的代码中提到的英文单词。我应用了代码,但是当我在清理后打印数据集时,它仍然没有清理!我想删除它而不是替换它。
lexicon = pd.read_csv(r"C:\Users\User\Python Code\data.csv")
lexicon.head(10)
#output
Vocabulary
0 [PAD]
1 [UNK]
2 [CLS]
3 [SEP]
4 [MASK]
5 !
6 #
7 $
8 %
9 &
lexicon['clean_tweet'] = lexicon.Vocabulary.str.replace('[^\w\s#@/:%.,_-]', '', flags=re.UNICODE) #removes emojis
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('@[_A-Za-z0-9]+', '') #removes handles
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('[A-Za-z0-9]+', '') #removes english
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('#',' ') #removes hashtag symbol only
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace(r'http\S+', '', regex=True).replace(r'www\S+', '', regex=True) #removes links
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('\d+', '') #removes numbers
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('\n', ' ') #removes new line
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('_', '') #removes underscore
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace('[^\w\s]','') #removes punctuation
lexicon.head(10)
# Vocabulary clean_tweet
0 [PAD]
1 [UNK]
2 [CLS]
3 [SEP]
4 [MASK]
5 !
6 #
7 $
8 %
9 &
我想删除所有包含这些符号或任何语言的行,只是我需要阿拉伯语单词,还是有另一种简单的方法来检测阿拉伯语单词?
注意:如果该行包含阿拉伯语单词和符号,我只想删除没有阿拉伯语单词的符号。
解决方案
按照这个 SO answer,阿拉伯字母的 Unicode 正则表达式范围是:
[\u0627-\u064a]
我们可以尝试使用这个字符类的否定版本以及str.replace
:
lexicon['clean_tweet'] = lexicon.clean_tweet.str.replace(r'[^\u0627-\u064a]', '')
如果您想保留空白字符或其他标点符号,则可以尝试使用此正则表达式:
[^\u0627-\u064a\s!?.-]
推荐阅读
- animation - 将动画添加到附加元素?(斯威夫特用户界面)
- html - 带有内容的 css 网格标题和具有最大宽度和中心的侧边栏
- android - 在 ConstraintLayout 中选择 Spinner 项目时,滚动视图跳到顶部
- java - 我的输出收到两条错误消息
- spring-boot - 在 h2 数据库 oracle 模式下插入无法按预期工作
- cryptography - 根据过去的值预先计算加密随机数的下一个值是否安全?
- html - 如何防止动态表增长超过定义的高度?
- kotlin - 有没有办法在卡夫卡的 Micronaut 中将密钥和对象作为返回值传递
- php - 显示图片网址 - wordpress
- powerbi - DAX 将标志设置为每月最大天数并输入