在大括号中的字母和日语字符串的组合后面加上括号

时间:2018-10-16 00:12:02

标签: python regex pandas

我在数据框中有一些看起来像这样的数据:

Japanese
--------
明日|Adverb の 天気|Weather は なんですか

在这里,明日被标记为副词,天気被标记为天气。

我正在使用Pandas和正则表达式,寻找一种在具有日语,竖线和英语的字符周围添加{}的方法,而不是仅在日语周围。 我尝试将regex与以下内容配合使用,但始终收到语法错误:

  

df。['Japanese'] = df ['Japanese']。str.append('(。+?\ | [A-Za-z _] +)\',   '{(。+?\ | [[A-Za-z _] +)}')

所需的输出如下(也正在寻找一种可以同时删除所有空格的方法...如果不可能的话,我以后可以这样做):

Japanese
--------
{明日|Adverb}の{天気|Weather}はなんですか

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用str.replace

df['Japanese'] = df['Japanese'].str.replace(r'(\w*\|[a-zA-Z]+)', r'{\1}', regex=True)   

# To remove white space use
df.Japanese.str.replace('\s',"", regex=True, inplace=True) 

# Output:

0    {'明日|Adverb'}の{'天気|Weather'}はなんですか
Name: Japanese, dtype: object

答案 1 :(得分:1)

我想你想要这个

df['Japanese'].replace(r'(.+?\|[A-Za-z_]+)','{\g<0>}', inplace=True, regex=True)

\g<0>是对()

内部组的引用

不幸的是,我无法弄清楚如何替换一行中的空格,因此之后您想这样做

df['Japanese'].replace('\s','', inplace=True,regex=True)