我需要读取一个管道(|)分隔的文本文件。 其中一个字段包含可能包含双引号的说明。 我注意到接收字典中缺少包含“所有”的所有行。 为了避免这种情况,我尝试读取整行,并使用string.replace()删除它们,如下所示,但看起来这些引号的存在会在行读取阶段产生问题,即在字符串之前.replace()方法。
代码如下,问题是'如何强制python不使用任何分隔符并保持整行?“。
with open(fileIn) as txtextract:
readlines = csv.reader(txtextract,delimiter="µ")
for line in readlines:
(...)
LI_text = newline[107:155]
LI_text.replace("|","/")
LI_text.replace("\"","") # use of escape char don't work.
注意:我使用的是版本3.6
答案 0 :(得分:2)
您可以使用正则表达式
In [1]: import re
In [2]: re.sub(r"\"", "", '"remove all "double quotes" from text"')
Out[2]: 'remove all double quotes from text'
In [3]: re.sub(r"(^\"|\"$)", "", '"remove all "only surrounding quotes" from text"')
Out[3]: 'remove all "only surrounding quotes" from text'
或将quote='"'
和quoting=csv.QUOTE_MINIMAL
选项添加到csv.reader()
,例如:
with open(fileIn) as txtextract:
readlines = csv.reader(txtextract, delimiter="µ", quote='"', quoting=csv.QUOTE_MINIMAL)
for line in readlines:
(...)
答案 1 :(得分:0)
课程:方法string.replace()不会更改字符串本身。必须将修改后的文本存储回来(string = string.replace())