2013-04-18 105 views
0

我试图读取制表符分隔但字段可能包含换行符的文件,我想维护具有换行符的字段。我目前的实现从每个“\ n”创建新的字段。(Python)使用换行符解析制表符分隔的字符串

我已经尝试过csv模块,只是在“\ t”上分裂,没有找到我要找的东西。以下是从给定的文件中的样本行:

* Field_1 \吨Field_2 \吨Field_3 \ N个附加文字\ n更多文本\吨Field_4 *

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

* [ “Field_1”, “Field_2”, “字段3 \ n附加文本\ n多的文字”, “Field_4”] *

任何想法或建议将是有益的。

+4

等等,你怎么知道文件中新行与新内容中的新行之间的区别?或者你是否说文件中有字面反斜杠-n? – wim 2013-04-18 02:03:50

+1

字段3是否包含在引号字符中?在文本编辑器中查看您的数据文件以确保您的答案。 – 2013-04-18 02:06:49

回答

3

您是否尝试在此选项卡上分割?

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

简单,谢谢。 – 5k1zk17 2013-04-18 02:34:45

1

与路径替换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() 

也有使用with语句文件的选项(一般建议)I/O:

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语句,打开的文件流将在运行时出现的错误时自动关闭,但它是les这对于人们学习文件I/O如何工作很明显。