所以我有一个项目,在这个项目中,我的程序读取一个txt文件,然后将这个txt文件转换成一个tab txt文件(基本上,它读取输入,当它找到一个特殊字符时,它会插入一个制表符'\t')。程序运行良好(到目前为止),但它只读取第一行,直到它找到一个新行'\n',我只是不明白我的代码中有什么地方出了问题。有人能告诉我代码在哪里失败吗?在
代码:
from Tkinter import *
import Tkinter as tk
import codecs
from string import *
u'\xe1'.encode('utf-8')
root = tk.Tk()
root.title('Tentative 1')
file = open('Data Path', 'r+')
#sentence = file.read()
#sentence = sentence.decode('cp1252', 'strict')
with codecs.open('Data path', encoding='latin1') as f:
sentence = f.readline()
if u'\xe1' in sentence:
print sentence
else:
pass
#sentence = sentence.replace("u'\xe1'", "-")
def task():
print '\n', sentence
def replace_all(text, dic):
for i, j in dic.iteritems():
text = text.replace(i, j)
return text
reps = {'^^':'\t', '(':'\t', ')':'\t', 'ISBN:':'\t', '--':'\t', '"':'\t', '.:':'\t', '|':'\t', 'p.':'\t', ',':' '}
txt = replace_all(sentence, reps)
def txt_conversor():
txt = replace_all(sentence, reps)
print '\n', txt
results = tk.Button(root, text='Results', width=25, command=task)
results.pack()
txt = tk.Button(root, text='Convert results', width=25, command=txt_conversor)
txt.pack()
root.mainloop()
我确实尝试过将f.readline()更改为f.readlines(),但出现了一个错误:
^{pr2}$那么如何从txt文件中读取多行呢?在
Input:
Correia, Teresa Pinto; Henriques, Virgínia; Julião, Rui Pedro^^ (2013)), IX Congresso da Geografia Portuguesa – Geografia: Espaço, Natureza, Sociedade e Ciência--, ISBN: 978-972-99436-6-9, |Lisboa: Associação Portuguesa de Geógrafos. p. 977 e-Book
Dominguez, L.; Aliste, J; Ibáñez Martinez; Natário, M.; Fernandes, Gonçalo Poeta (2013) – Estudio Socioeconomico de la Frontera entre Portugal y España, Edita Riet, Salamanca. (ISBN: 978-84-7797-403-1)
输出:
Correia Teresa Pinto; Henriques Virgínia; Julião Rui Pedro 2013 IX Congresso da Geografia Portuguesa Geografia: Espaço Natureza Sociedade e Ciência 978-972-99436-6-9 Lisboa: Associação Portuguesa de Geógrafos. 977 e-Book
读取文件的最佳方式。在
使用
f.read()
将所有文本作为一个字符串(其中包含所有'\n'')。在f.readline()
只返回文件的下一行,包括换行符,因此它在处理第一行后正确停止。在f.readlines()
返回字符串列表,其中每个字符串对应于文件中的一行。在您的例子中,问题是您在列表对象(sentence
)上使用字符串方法。在为了修复问题,您可以使用
read()
,它以字符串的形式返回文件的全部内容(这可能是最具python风格的解决方案),或者确保将一个列表传递给您的replace_all
函数(逐个处理列表项,使用.join()
,等等)。在在这里您可以找到对不同文件方法的一个很好的解释:http://interactivepython.org/runestone/static/thinkcspy/Files/files.html#filemethods2a
相关问题 更多 >
编程相关推荐