Python 打印到文件。使用 defaultdict 排序
Python printing to a file. Sorting with defaultdict
我有一些代码:
filename = "training_data.txt"
with open(filename,'r') as infile:
d = defaultdict(lambda: defaultdict(int))
tagRE = re.compile(r'[A-Za-z]+/[A-Z]+')
for line in infile:
for token in tagRE.findall(line):
word, tag = token.split("/")
d[word][tag] += 1
f = open('out.txt', 'w')
for word, word_data in d.items():
f.write(word + " " + " ".join(tag + ":" + str(freq) + '\n'
for tag, freq in word_data.items()))
训练数据是词性标记的文本,例如
Today/NN ,/, PC/NN shipments/NNS annually/RB total/VBP some/DT $/$ 38.3/CD billion/CD world-wide/JJ ./.
写入文件的文本应采用以下格式:word: part-of-speech:frequency 如果一个词有多个标签,则此标签和频率位于同一行。目前,如果一个词有多个标签,则换行符将标签放在新行上。我愿意:
1) 将这些放在同一行,例如
意思是 VBP:7 JJ:1 NN:2 VB:27
2) 按降序打印这些频率。我的数据结构是否允许这样做?我不知道该怎么做。
谢谢!
tagfreq = " ".join(tag + ":" + str(freq)
for tag, freq in
sorted(word_data.items(), key=lambda x: x[1], reversed=True))
w = ''.join([word, " ", tagfreq, '\n'])
f.write(w)
通常对字符串使用 join
而不是 +
。将 \n
移动到 write
的末尾,并按频率降序排列 items
。
我有一些代码:
filename = "training_data.txt"
with open(filename,'r') as infile:
d = defaultdict(lambda: defaultdict(int))
tagRE = re.compile(r'[A-Za-z]+/[A-Z]+')
for line in infile:
for token in tagRE.findall(line):
word, tag = token.split("/")
d[word][tag] += 1
f = open('out.txt', 'w')
for word, word_data in d.items():
f.write(word + " " + " ".join(tag + ":" + str(freq) + '\n'
for tag, freq in word_data.items()))
训练数据是词性标记的文本,例如
Today/NN ,/, PC/NN shipments/NNS annually/RB total/VBP some/DT $/$ 38.3/CD billion/CD world-wide/JJ ./.
写入文件的文本应采用以下格式:word: part-of-speech:frequency 如果一个词有多个标签,则此标签和频率位于同一行。目前,如果一个词有多个标签,则换行符将标签放在新行上。我愿意:
1) 将这些放在同一行,例如 意思是 VBP:7 JJ:1 NN:2 VB:27
2) 按降序打印这些频率。我的数据结构是否允许这样做?我不知道该怎么做。
谢谢!
tagfreq = " ".join(tag + ":" + str(freq)
for tag, freq in
sorted(word_data.items(), key=lambda x: x[1], reversed=True))
w = ''.join([word, " ", tagfreq, '\n'])
f.write(w)
通常对字符串使用 join
而不是 +
。将 \n
移动到 write
的末尾,并按频率降序排列 items
。