我需要读取存储在文件 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 :"
我怎么能这样做?
答案 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 : "