Python read_table读txt文件中—>符号读不出来
时间: 2024-05-01 09:21:58 浏览: 17
您好,可以通过设置read_table函数的delimiter参数来指定读取文件时使用的分隔符,例如:
```
import pandas as pd
df = pd.read_table('test.txt', delimiter='—>')
```
这样,就可以按照—>符号进行读取了。祝您工作愉快!
相关问题
文本文件article.txt(一篇英文文章)直接在目录中新建并输入数据,编写一个程序,对文件中的单词根据长度进行分类和统计,标点符号忽略,相同的单词仅计算一次。分类和统计结果按照以下格式:1:1,a 2:3,an on in,结果按照单词长度升序排序后显示,并存放到new_article_classify.txt中
下面是Python的实现代码:
```python
import string
# 读取文件并分割单词
with open('article.txt', 'r') as f:
words = f.read().lower().split()
# 去掉单词中的标点符号
table = str.maketrans('', '', string.punctuation)
words = [word.translate(table) for word in words]
# 统计单词出现次数
word_freq = {}
for word in words:
if word not in word_freq:
word_freq[word] = 1
# 对单词按长度进行分类和统计
word_classify = {}
for word, freq in word_freq.items():
length = len(word)
if length not in word_classify:
word_classify[length] = [(word, freq)]
else:
word_classify[length].append((word, freq))
# 排序并输出结果到文件
with open('new_article_classify.txt', 'w') as f:
for length in sorted(word_classify.keys()):
words = [word[0] for word in word_classify[length]]
freqs = [word[1] for word in word_classify[length]]
f.write('{}:{}\n{}\n'.format(length, len(word_classify[length]), ' '.join(words)))
```
这个程序首先读取文件并把文章中的单词分割出来,然后去掉单词中的标点符号,统计每个单词出现的次数。接下来,根据单词的长度对它们进行分类和统计,最后按照单词长度升序排序并输出结果到文件new_article_classify.txt中。
用python实现以下具体内容:批量读取txt文件,根据停用词词表以及词表使用最大逆向算法进行分词,词表说明了哪些字的组合可以被算作一个词,停用词表说明哪些没有实意的词可以去掉,其中词表和停用词表均为excel文件,并要求去掉标点符号、数字等;之后蒋分词结果以同名文件保存在另一个文件夹里;最后对分词结果的txt文件进行词频统计,将结果也保存在一个新的文件夹里面。
好的,我来解答你的问题。
首先,需要安装一些依赖库,包括`openpyxl`、`jieba`、`re`、`os`等。可以通过pip命令进行安装:
```
pip install openpyxl
pip install jieba
```
接下来,我们可以先定义一个函数来读取停用词表和词表:
```python
import openpyxl
def read_excel(file_path):
# 读取excel文件
workbook = openpyxl.load_workbook(file_path)
worksheet = workbook.active
# 读取每一行的数据,存放在列表中
data_list = []
for row in worksheet.iter_rows():
row_list = []
for cell in row:
row_list.append(cell.value)
data_list.append(row_list)
return data_list
```
然后,我们可以定义一个函数来对单个txt文件进行分词:
```python
import jieba
import re
def cut_words(file_path, word_table, stop_words):
# 读取txt文件
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# 去除标点符号、数字等
content = re.sub('[^\u4e00-\u9fa5a-zA-Z]+', '', content)
# 最大逆向匹配分词
words_list = []
max_len = max([len(word) for word in word_table])
while content:
max_cut = min(len(content), max_len)
sub_content = content[-max_cut:]
while sub_content not in word_table and len(sub_content) > 1:
max_cut -= 1
sub_content = content[-max_cut:]
words_list.insert(0, sub_content)
content = content[:-max_cut]
# 去除停用词
words_list = [word for word in words_list if word not in stop_words]
return words_list
```
最后,我们可以定义一个函数来批量读取txt文件、分词并统计词频:
```python
def batch_cut_words(input_folder, output_folder, word_table_path, stop_words_path):
# 读取词表和停用词表
word_table = [word[0] for word in read_excel(word_table_path)]
stop_words = set([word[0] for word in read_excel(stop_words_path)])
# 遍历文件夹
for file_name in os.listdir(input_folder):
if file_name.endswith('.txt'):
# 对单个txt文件进行分词
words_list = cut_words(os.path.join(input_folder, file_name), word_table, stop_words)
# 将分词结果保存到同名文件中
with open(os.path.join(output_folder, file_name), 'w', encoding='utf-8') as f:
f.write(' '.join(words_list))
# 统计词频并保存到新的文件中
word_count = {}
for word in words_list:
word_count[word] = word_count.get(word, 0) + 1
with open(os.path.join(output_folder, file_name[:-4] + '_count.txt'), 'w', encoding='utf-8') as f:
for word, count in word_count.items():
f.write(word + '\t' + str(count) + '\n')
```
最后,我们可以调用`batch_cut_words`函数来进行批量处理:
```python
input_folder = 'input_folder'
output_folder = 'output_folder'
word_table_path = 'word_table.xlsx'
stop_words_path = 'stop_words.xlsx'
batch_cut_words(input_folder, output_folder, word_table_path, stop_words_path)
```
这样,就可以批量读取txt文件,根据停用词词表以及词表使用最大逆向算法进行分词,词频统计,并将结果保存在指定文件夹中了。