Python能否在读取文本文件时去除字符串中的双引号?
我有一个文本文件,里面有大约5000行内容,格式如下:
5.6 4.5 6.8 "6.5" (new line)
5.4 8.3 1.2 "9.3" (new line)
最后一项是用双引号括起来的数字。
我想用Python(如果可以的话)把这四列数据分别赋值给四个双精度变量。但我遇到的主要问题是最后那项,我找不到办法去掉数字的双引号,这在Linux上有可能吗?
这是我尝试过的:
#!/usr/bin/python
import os,sys,re,string,array
name=sys.argv[1]
infile = open(name,"r")
cont = 0
while 1:
line = infile.readline()
if not line: break
l = re.split("\s+",string.strip(line)).replace('\"','')
cont = cont +1
a = l[0]
b = l[1]
c = l[2]
d = l[3]
9 个回答
14
你可以使用一个叫做 shlex
的模块,它是Python标准库的一部分:
>>> import shlex
>>> print shlex.split('5.6 4.5 6.8 "6.5"')
['5.6', '4.5', '6.8', '6.5']
33
for line in open(name, "r"):
line = line.replace('"', '').strip()
a, b, c, d = map(float, line.split())
这个代码有点简单粗暴,如果比如说一行里没有四个值的话,它就会报错。
11
这个 csv
模块是 Python 自带的工具,可以自动处理一些事情。虽然它的说明文档对 skipinitialspace
这个选项讲得不是很清楚,但它的功能是可以帮助你处理数据时跳过开头的空格。
>>> import csv
>>> with open(name, 'rb') as f:
... for row in csv.reader(f, delimiter=' ', skipinitialspace=True):
... print '|'.join(row)
5.6|4.5|6.8|6.5
5.4|8.3|1.2|9.3