我最近不得不在我的网站上紧急复制我的数据库。清理多个副本的文件
我使用我使用我的管理代码在Python中创建的一些函数来抓取它。 数据库被格式化,如:
Name:
Phone Number:
Has played the game:
一切都被复制在.txt
文件,但有时候,我发现像文件中的一些错误:
Name: Name: Name: Bob
我如何使用shell命令或Python清理这个烂摊子但保持相同的顺序(我希望它仍然是名称,电话号码等)?
我最近不得不在我的网站上紧急复制我的数据库。清理多个副本的文件
我使用我使用我的管理代码在Python中创建的一些函数来抓取它。 数据库被格式化,如:
Name:
Phone Number:
Has played the game:
一切都被复制在.txt
文件,但有时候,我发现像文件中的一些错误:
Name: Name: Name: Bob
我如何使用shell命令或Python清理这个烂摊子但保持相同的顺序(我希望它仍然是名称,电话号码等)?
的说你db.txt
Phone Number:
Phone Number: Phone Number: Phone Number: 0118521358 Name: Name: Name: Name: Bob
Has played the game:
Name: Name: Name: Name: Bob
有这个你可以尝试一点点这样的脚本
import re
#create a new file called new_file
new_file=open("new_file",'w')
#open the database file with the discrepancies
file_with_error=open('db.txt','r')
#make a list of all your columns in the db
db_header=['Name:','Phone Number:']
#iterate through each line in your database file and find matches to replace
for line in file_with_error:
for col_name in db_header:
line=re.sub("(%s[ ]*)+" %(col_name,),col_name,line)
new_file.write(line) #write your new line your file
new_file.close()
exit(0)
您可以使用正则表达式来运行字符串匹配,并在您的文本文件中进行替换,修复此问题。 你可以用python或简单的编辑器如notepad ++来做到这一点。 搜索表达式:
Name:.+(Name: (?!Name:).+)
与
$1
在文本文件中这个表达式替换它会发现,与
Name:
开头的行并将其替换为:
Name: Bob
我假设你知道如何在python中逐行读取文本文件。假定你读每一行成一个称为S
>>> s = "Name: Name: Name: Bob"
>>> s2 = "Name: Bob"
>>>
>>> s_split = s.split(":")
>>> s_split
['Name', ' Name', ' Name', ' Bob']
>>> result = ": ".join(s_split[-2:])
>>> result
' Name: Bob'
>>> result = ": ".join(s_split[-2:]).strip()
>>> result
'Name: Bob'
第一分割字符串将字符串分割成字符串,其中的列表:是分隔符。连接将使用列表中的最后两个字符串,并将它们与以下内容一起加入:如果这条线是正常的,它可以工作。它也适用于任何数量的故障标签
显示您的TXT文件的一个较大的样本。有时名称是唯一的问题:重复?显示每种类型的异名 –
唯一的问题是,有时,名称,电话号码已经玩过游戏可以在我的文件中重复几次在同一行 – rak007
除了python.what外壳你使用的是Linux?.. – repzero