(
我有一个看起来像这样的 CSV 文件:
块引用
- 身份证件内容 文本
- 1 这里有一些文本 文本
- 2 她也来了一些文本
- 文本 3 等等,等等...
块引用
我想编写一个代码来迭代此 CSV 表的每一行。 然后计算每行中的标记数(例如每个文本( 然后创建一个新的 CSV 表作为输出,其中应该只是文本中带有标记数量的文本 ID。
块引用
输出 CSV 文件应如下所示:
- 令牌编号
- 文本 1 8
- 案文2 12
- 文本3 15
块引用
到目前为止,我有这个代码:
import csv
from textblob_de import TextBlobDE as TextBlob
data = open('myInputFile.csv', encoding="utf-8").readlines()
blob = TextBlob(str(data))
csv_file = open('myOutputFile.csv', 'w', encoding="utf-8")
csv_writer = csv.writer(csv_file)
# Define the Headers of the CSV
csv_writer.writerow(['Text-ID', 'Tokens])
def numOfWordTokens(document):
myList = []
for eachRow in document:
myList.append(eachRow)
return "n".join(myList)
#return eachRow
#print(eachRow)
# Count Tokens
#countTokens = len(wordTokens2.split()) # Output: integer
#return countTokens
#myList.append(str(countTokens))
wordTokens = numOfWordTokens(data)
# Write Content in the CSV-Table Rows
csv_writer.writerow([wordTokens])
csv_file.close()
那么,首先我有以下问题?
当我返回每个行时,我在 Shell 中没有得到任何输出,只有 1. 行作为新创建的 CSV 文件中的输出。 当我打印(每行(时,我实际上将每一行打印为Shell中的输出,但是我新创建的CSV文件只是空的!
所以这是我遇到问题的第一部分,所以我不能继续转到我实际计算每行中的令牌并将令牌数写入新的 CSV 文件中的部分。
使用pandas非常简单,但是如果您不想使用其他模块,那也没关系:) 我添加了熊猫和手动迭代数据的代码:
import pandas as pd
import csv
def main_pandas(path_to_csv: str, target_path: str):
df = pd.read_csv(path_to_csv, encoding='utf-8')
df['tokens'] = df['Content'].apply(lambda x: len(x.split()))
sub_df = df[['ID', 'tokens']]
sub_df.to_csv(target_path, index=False)
def main_manual(path_to_csv: str, target_path: str):
with open(path_to_csv, 'r') as r_fp:
csv_reader = csv.reader(r_fp)
next(csv_reader) # Skip headers
with open(target_path, 'w') as w_fp:
csv_writer = csv.writer(w_fp)
csv_writer.writerow(['Text ID', 'tokens']) # Write headers
for line in csv_reader:
text_id, text_content = line
csv_writer.writerow([text_id, len(text_content.split())])
if __name__ == '__main__':
main_manual('text.csv', 'tokens.csv')