从文件中读取逐字字符串

时间:2014-02-12 23:47:21

标签: python string file-io

我需要读取存储在文件 verbatim 中的字符串。我尝试在单引号和双引号之间编写字符串,但这似乎不起作用。

这是我的意思MWE

with open('file.dat', mode="r") as f:
    for line in f:
        reader = line.split()
        # Read string.
        liter = str(reader[1])

print liter

file.dat文件由一行组成,如下所示:

ID  " Literal\t : "

其中第一列包含一个ID,可帮助我识别该行,第二列应包含该字符串作为单个元素。

此字符串并不总是看起来完全相同。例如,它可以在开头没有字符(即:"Literal\t : ")空格而不是\t字符(即" Literal : ")在开头或结尾没有空格(即:{ {1}})等。

我所追求的结果与我简单的结果相同(在上面的例子中):

"Literal\t :"

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

好吧,如果您的数据始终保证完全,那么您可以使用正则表达式:

import re

data = '''
ID  " Literal\t : "
'''

for line in data.split('\n'):
    if line:
        liter = re.search(r'"(.*)"', line).groups()[0]
        print(liter)
        print(repr(liter))

结果:

 Literal     : 
' Literal\t : '

答案 1 :(得分:0)

如何使用csv模块读取您的文件?它支持您想要的任何分隔符,并且可以支持多种引用包含分隔符的文本的方式。看起来你需要一个空格分隔符并引用包含空格的字符串(这是默认的引用样式):

with open('file.dat', newlines="") as f: # if you're using Python 2, open in binary mode
    reader = csv.reader(f, delimiter=" ")
    for line in reader:
        print(line) # for the example data, line[1] will be " Literal\\t : "