python - 将 csv 中的值替换为文本并将其写入文件和中心段落

标签 python csv python-2.7 replace

注意:原始代码已更改以反射(reflect)建议。保留原帖大部分完整,供像我这样的新手引用。

我有一个 csv 文件,其中可以包含从零到所有 4 个值。

COLOUR,Code1,Code2  
Red,1,A  
White,3,D  
Blue,1,C  
Orange,2,D  

我有一个测试文件(test_test.txt),其中包含以下内容:

"Colours have come to symbolize many things. "

我挣扎的地方是不知道如何替换值。我想搜索颜色文件,如果找到一个值,请将其替换为另一个值:

"Red is the colour of blood, rubies, and strawberries." replaces Red  
"WhitePages is the world's largest and most trusted source for business." replaces White  
"The term blue moon is used colloquially to mean a rare event." replaces Blue  
"Orange you glad I have no more colours?" replaces Orange 

我想以两种格式(段落和列表)将其写入文本文件:

Red is the colour of blood, rubies, and strawberries, WhitePages is the world's largest and most trusted source for business, The term "blue moon" is used colloquially to mean a rare event, and Orange you glad I have no more colours?

我希望能够将其置于文本文档的中心:

Red is the colour of blood, rubies, and strawberries  
WhitePages is the world's largest and most trusted source for business  
The term "blue moon" is used colloquially to mean a rare event  
Orange you glad I have no more colours?  

这是包含建议的修订后的代码。有人知道如何将最后 4 句话居中吗?

import csv

with open('C:/Test/test_text.txt', 'a') as f:
    with open('C:/Test/colour.csv', 'rb') as test:
        colour_dict = {
            'Red':    "Red is the colour of blood, rubies, and strawberries",
            'White':  "WhitePages is the world's largest and most trusted source for business",
            'Blue':   "The term blue moon is used colloquially to mean a rare event",
            'Orange': "Orange you glad I have no more colours?"
        }
        reader = csv.DictReader(test)
        colour_list = tuple([colour_dict[row["COLOUR"]] for row in reader])

        # Wtite out comma separated list.

        if len(colour_list) == 0:
            colourGroup =  exit
        elif len(colour_list) == 1:
            colourGroup =  '%s' % colour_list #

        elif len(colour_list) == 2:
            colourGroup =  '%s and %s' % colour_list

        else:
            colourGroup = ('%s, ' * (len(colour_list)-1) + 'and %s') % tuple(colour_list)
        f.write(colourGroup)

        # Write  out list as separate lines.
        f.write ('\n\ncolour can influence our emotions, our actions and how we respond to various people, things and ideas. Much has been studied and written about colour and its impact on our daily lives.\n\nMany people believe that colours are powers, and that bright colours are especially powerful. Here are some of the meanings of colours and the energies contained in their corresponding stones.')
        f.write('\n\n' + ('\n'.join(colour_list)))

非常感谢任何和所有帮助。

最佳答案

您可以使用字典将颜色转换为所需的替换颜色:

colour_dict = {
    'Red':    "Red is the colour of blood, rubies, and strawberries",
    'White':  "WhitePages is the world's largest and most trusted source for business",
    'Blue':   "The term blue moon is used colloquially to mean a rare event",
    'Orange': "Orange you glad I have no more colours?"
}
colour_list = tuple([colour_dict[row["COLOUR"]] for row in reader])

现在,colour_list 包含用其表达式替换的颜色。如果 csv 包含意外值,您应该处理异常。

尽管您的问题中没有提及,但您的目标似乎是将结果导入到 Word 文档中。如果您想做到这一点,并且让文本真正居中,我认为最好的方法是生成富文本格式 (RTF) 文件,而不是纯文本文件。支持真正居中,并且可以被Word阅读。

我上传了an example ,也许这个simple tutorialRTF specification可以指导你。或者也许使用 Word 的 XML 格式也可以,但我没有这方面的经验。

关于python - 将 csv 中的值替换为文本并将其写入文件和中心段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713285/

相关文章:

python - 无法在 Ubuntu 上使用 pip 安装 Rodeo

python - Kivy:访问列表对象时出现AttributeError: 'NoneType'对象没有属性 'bind'

python - 需要为 X 轴标签添加子图之间的空间,可能会删除轴槽口的标签

android - 如何使用 python 打开 adb shell 并在 shell 中执行命令

javascript - 如何使用queuejs和d3js并行加载30个csv文件?

r - 尝试设置 "sep"/"dec"忽略 : Error in write. csv 格式 - R

python-2.7 - IO错误:Cannot open image while generating barcode after freezing using py2exe

python - 如何使用 pyusb 与该设备通信?

php - 以键值格式显示csv内容并存储在数据库中

python - GAE 查询中如何实现 filter() 和 get()?