【问题标题】:(Python) Parsing tab delimited strings with newline characters(Python) 用换行符解析制表符分隔的字符串
【发布时间】:2013-04-18 01:56:34
【问题描述】:

我正在尝试读取一个以制表符分隔但字段可能包含换行符的文件,我想保留包含换行符的字段。我当前的实现从每个“\n”创建新字段。

我已经尝试了 csv 模块,只是在“\t”上拆分,但我正在寻找的内容没有成功。以下是给定文件的示例行:

*Field_1 \t Field_2 \t Field_3 \n 附加文本\n 更多文本\t Field_4*

我想从上面的数据中生成一个包含 4 个元素的列表。

*["Field_1", "Field_2", "Field3 \n Additional Text \n More text", "Field_4"]*

任何想法或建议都会有所帮助。

【问题讨论】:

  • 等等,你怎么知道文件换行和内容换行的区别?或者你是说文件中确实有反斜杠-n?
  • 字段 3 是否用引号括起来?在文本编辑器中查看您的数据文件以确保您的答案。

标签: python


【解决方案1】:

您是否尝试过像这样在标签上拆分?

data = 'Field_1 \t Field_2 \t Field_3 \n Additional Text \n More text \t Field_4'
print data.split('\t')

【讨论】:

    【解决方案2】:

    fileName 替换为您正在读取的文件的路径:

    inFile = open(fileName, "r")
    rawData = inFile.read() # Entire file's contents as one multiline string (if there's a line break)
    data = rawData.split("\t")
    inFile.close()
    

    还有一个选项(通常推荐)为文件 I/O 使用 with 语句:

    with open(fileName, "r") as inFile:
        rawData = inFile.read() # Entire file's contents as one multiline string (if there's a line break)
        data = rawData.split("\t")
    # you can omit the inFile.close() statement.
    

    使用with 语句,如果在运行时出现错误,打开的文件流将自动关闭,但学习文件 I/O 的人不太清楚它是如何工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多