【问题标题】:How to add a line break in a string inside a DataFrame?如何在 DataFrame 内的字符串中添加换行符?
【发布时间】:2019-09-25 13:11:14
【问题描述】:

我正在尝试这个文本微调器,但是当我尝试在创建的字符串中添加换行符时,我发现它很麻烦。正如您在下面的代码中看到的,我添加了"\n",但打印生成的输出(以及 DataFrame 的内容)不包含此中断。

import spintax

df = pd.DataFrame()

for i in range(0, 50):
    data = spintax.spin("{option1|option2}" +  "\n" + " blablabla ")
    df = df.append({'A': data}, ignore_index=True)

df['A'] = df['A'].str.replace(r'\s+', " ")
print(df)

我怎样才能让它工作?

print(df) 输出如下所示:

                         A
0   option2 blablabla 
1   option2 blablabla 
2   option2 blablabla 
3   option2 blablabla 
4   option2 blablabla 

【问题讨论】:

    标签: python pandas spintax


    【解决方案1】:

    所以问题出在您替换 r\s+ 时,它也匹配换行符并将它们替换为空格。 source.

    如果您注释您的行,那么下面的行将保留字符串中的换行符。

      import spintax
        df = pd.DataFrame()
        for i in range(0, 50):
            data = spintax.spin("{option1|option2}" +  "\n" + " blablabla ")
            df = df.append({'A': data}, ignore_index=True)
    
        # df['A'] = df['A'].str.replace(r'\s+', " ")
    
        print(df)
    

    这是你想要达到的目标吗?

    【讨论】:

    • 哦,现在说得通了。是的,差不多就是这样。我将不得不想出另一种方法来删除空格(它们有时会发生,没有发现我做错了什么),然后。
    • 从命令行运行产生:option1\n blablabla 是预期的答案吗?
    【解决方案2】:

    这是不可能的,因为您的数据框中会出现额外的一行而没有索引值。数据框的定义不支持我认为您正在努力实现的目标Two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns).

    我认为应该是这样的:

                             A
    0   option2
        blablabla
    1   option2
        blablabla
    2   option2 
        blablabla 
    3   option2 
        blablabla 
    4   option2 
        blablabla 
    

    作为一种解决方案,您可以尝试将其拆分为两列并添加一个额外的列,该列将标记应出现换行符的位置,因此当您连接整行时,您将获得所需的字符串:

    import spintax
    import pandas as pd
    df = pd.DataFrame()
    for i in range(0, 50):
        data = spintax.spin("{option1|option2}" + "\n" +" blablabla ")
        df = df.append({'A': data}, ignore_index=True)
    df['A'] = df['A'].str.replace(r'\s+', " ")
    print(df)
    df['split'] = df['A'].str.split(' ')
    df['first'] = df['split'].str.get(0)
    df['flag_break'] = '\n'
    df['second'] = df['split'].str.get(1)
    df['full_string'] = df['first'] + " " +df['flag_break']+df['second']
    df = df.drop('split',axis=1)
    
    print(df.head())
    print(df['full_string'].max())
    

    数据框的输出:

                         A    first flag_break     second          full_string
    0   option2 blablabla   option2         \n  blablabla  option2 \nblablabla
    1   option1 blablabla   option1         \n  blablabla  option1 \nblablabla
    2   option2 blablabla   option2         \n  blablabla  option2 \nblablabla
    3   option1 blablabla   option1         \n  blablabla  option1 \nblablabla
    4   option2 blablabla   option2         \n  blablabla  option2 \nblablabla
    

    输出你的完整字符串,这样你就得到了换行符print(df['full_string'].max()):

    option2
    blablabla
    

    【讨论】:

      猜你喜欢
      • 2014-12-01
      • 1970-01-01
      • 2013-06-01
      • 2021-06-14
      • 2016-07-19
      • 2023-03-30
      • 1970-01-01
      • 2017-07-31
      相关资源
      最近更新 更多