【问题标题】:Text formatting in Python [closed]Python中的文本格式[关闭]
【发布时间】:2012-11-09 15:41:02
【问题描述】:

我有一个格式如下的文件:

01*13345233000*7677082000*0335
02*1*Ground*Workshop*640.80*11.46*7344
02*2*First*Office/Labs*300.81*14.10*4241
02*3*Ground*Workshop*774.46*11.46*8875
01*13345233000*7677082000*0335
02*1*Ground*Workshop*640.80*11.46*7344
02*2*First*Office/Labs*300.81*14.10*4241

我只想重新格式化如下(把01开头的行复制到对应的02行):

02*1*Ground*Workshop*640.80*11.46*7344*01*13345233000*7677082000*0335
02*2*First*Office/Labs*300.81*14.10*4241*01*13345233000*7677082000*0335
02*3*Ground*Workshop*774.46*11.46*8875*01*13345233000*7677082000*0335
02*1*Ground*Workshop*640.80*11.46*734401*13345233000*7677082000*0335
02*2*First*Office/Labs*300.81*14.10*424101*13345233000*7677082000*0335

非常感谢您的帮助。

凯特

【问题讨论】:

  • 什么都没有 - 我只设法将所有以 01 和 02 开头的行提取到不同的文件中
  • 欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。
  • 感谢您的回答。这是我到目前为止所拥有的,但这不是我想要的,这就是为什么我没有在 f_in = open('C:\Original.txt') f_out = open('C://01.txt', w") while 1: lines = f_in.readlines() if not lines: break for line in lines: if line.startswith('01'): f_out.write(line)
  • @user1812613 难以阅读。更好地编辑您的问题...

标签: python text formatting


【解决方案1】:

假设您的文件名为textfile.txt,这将创建一个名为to_output 的列表,您可以编写第二个文件或您可能需要对其进行的任何其他操作...

to_output = []
current_01 = ""

with open('textfile.txt', 'r') as datafile:
    for line in datafile:
        if line.startswith("01"):
            current_01 = line
        elif line.startswith("02"):
            to_output.append(line.strip()+"*"+current_01)

print to_output

【讨论】:

  • 非常感谢您。它工作正常 - 唯一的问题是输入文件很大,我得到一个内存错误。
  • 这个答案看起来不错,可以轻松修改以处理大文件。只需打开要写入的文件:with open('textfile.txt','r') as datafile, open('outfile.txt','w') as outfile:',而不是追加到列表中,只需写入文件即可。
  • 好声 @Matt;虽然不想做所有的工作......
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 2010-12-23
  • 1970-01-01
相关资源
最近更新 更多