1

我正在尝试这个文本微调器,但是当我尝试在创建的字符串中添加换行符时,我发现它很麻烦。正如您在下面的代码中看到的那样,我添加"\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 
4

2 回答 2

1

所以问题出在你替换 r\s+ 时,它也匹配换行符并用空格替换它们。 来源

如果您评论您的行,那么以下将保留字符串中的换行符。

  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)

那是你想要达到的吗?

于 2019-09-25T13:23:56.943 回答
1

这是不可能的,因为在没有索引值的情况下,您的数据框中会出现额外的一行。数据框的定义不支持我认为您要实现的目标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
于 2019-09-25T13:20:58.883 回答