【问题标题】:Extract text between characters, strings or brackets提取字符、字符串或括号之间的文本
【发布时间】:2017-11-10 21:06:19
【问题描述】:

我有以下类型的数据:

pd.DataFrame({"Hashtags": [ "[]", "[u'AAPHealthCare4All']", "[u'CBI',","u'Delhi',", "u'Emergency']"]})

预期输出

pd.DataFrame({"Hashtags": [ " ", "AAPHealthCare4All", "CBI","Delhi", "Emergency"]})

括号、括号或逗号和引号均未丢失/错字。 [] 应替换为空格。基本上我想删除所有 "[" , "]" , " [u' " 等。 我使用了以下代码,但无济于事:

for index,row in df.iterrows(): 
    if "RT @" in row["Tweet"]: 
        df['Hashtags'] =df['Hashtags'].str.replace(r'[^[]]*\[|\][^]*|\[u\'*\'\]|\[\'*\'\]', '')
df.to_csv('string_HT.csv', index=False)

【问题讨论】:

    标签: python regex string pandas replace


    【解决方案1】:

    您可以将以下表达式应用于您的主题标签:

    df['Hashtags'] = sum([x if x else [" "] for x 
                          in ast.literal_eval(''.join(df['Hashtags'])\
                                                .replace('][', '],['))],\
                         [])
    

    结果:

    [' ', 'AAPHealthCare4All', 'CBI', 'Delhi', 'Emergency']
    

    但是,数据框中的行数会发生变化,并且不会保留索引。您可能错误地使用了数据框。

    【讨论】:

      【解决方案2】:

      您可以使用提取功能:

      df.Hashtags.str.extract("'(.*)'").fillna('')
      Out[1052]: 
      0                     
      1    AAPHealthCare4All
      2                  CBI
      3                Delhi
      4            Emergency
      Name: Hashtags, dtype: object
      

      【讨论】:

        【解决方案3】:

        我认为 simpliset 是使用双 stripreplace

        df['Hashtags'] = df['Hashtags'].str.strip("[u,]").str.strip("'").replace('', ' ')
        print (df['Hashtags'].tolist())
        [' ', 'AAPHealthCare4All', 'CBI', 'Delhi', 'Emergency']
        

        strip 是必要的,因为如果只有一个,它会从字符串的开头和结尾删除所有u

        df = pd.DataFrame({"Hashtags": [ "[]", "[u'uuAAPHealthCare4All']", 
                                        "[u'uCBIuu',","u'uDelhi',", "u'Emergency']"]})
        print (df)
                           Hashtags
        0                        []
        1  [u'uuAAPHealthCare4All']
        2               [u'uCBIuu',
        3                u'uDelhi',
        4             u'Emergency']
        
        df['Hashtags'] = df['Hashtags'].str.strip("[u,']")
        print (df['Hashtags'])
        0                     
        1    AAPHealthCare4All
        2                  CBI
        3                Delhi
        4            Emergency
        Name: Hashtags, dtype: object
        

        【讨论】:

          猜你喜欢
          • 2021-05-13
          • 2020-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-24
          • 1970-01-01
          • 2021-05-25
          相关资源
          最近更新 更多