如何用Python(优先Pandas)合并因换行拆分的字符串行?
处理跨行拆分字符串的Python方案(优先Pandas)
方法一:先预处理文件再导入Pandas
如果数据文件体积不大,可以先完成跨行内容的合并,再导入Pandas处理:
# 读取目标文件 with open('your_data_file.txt', 'r', encoding='utf-8') as f: lines = f.readlines() merged_content = [] i = 0 total_lines = len(lines) while i < total_lines: current_line = lines[i].strip() # 判断当前行是否是被拆分的上半段(匹配示例里的"-\"结尾格式) if current_line.endswith('-\"'): # 提取下一行内容,去掉开头的空格和分隔符"-" next_line = lines[i+1].strip().lstrip('-') # 合并两行,移除分隔符 combined_line = current_line[:-2] + next_line + '"' merged_content.append(combined_line) i += 2 # 跳过已处理的下一行 else: merged_content.append(current_line) i += 1 # 转成Pandas DataFrame import pandas as pd df = pd.DataFrame(merged_content, columns=['content'])
方法二:直接在Pandas中处理
如果已经将数据导入Pandas(此时拆分的内容是独立行),可以用以下逻辑合并:
import pandas as pd # 假设df是已导入的DataFrame,目标列名为'content' df['content'] = df['content'].str.strip() # 标记需要合并的行:当前行以"-\"结尾,且下一行以"-"开头 merge_mask = df['content'].str.endswith('-\"') & df['content'].shift(-1).str.startswith('-') # 遍历需要合并的行索引 for idx in df[merge_mask].index: # 提取并拼接内容,移除分隔符 upper_part = df.loc[idx, 'content'][:-2] lower_part = df.loc[idx+1, 'content'].lstrip('-') df.loc[idx, 'content'] = f'{upper_part}{lower_part}"' # 标记被合并的行待删除 df.loc[idx+1, 'content'] = None # 删除已被合并的空行 df = df.dropna().reset_index(drop=True)
注意事项
- 以上代码针对你给出的
"xxx-和-xxx"格式编写,若分隔符位置、格式有变化,需调整endswith、startswith的匹配参数 - 如果存在一行拆分为多行的情况,可以多轮执行合并逻辑,直到没有需要合并的行为止
内容的提问来源于stack exchange,提问作者eazyezy
相关产品推荐
相关产品推荐

