解析文本文件而不拆分多词名称

2024-05-13 23:59:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用一个文本文件从xml中获取数字输出,并将其转换为一个名称,然后将其写入一个单独的文本文件。我的问题是,这个名字有时有空格,我不知道如何处理这个问题。你知道吗

程序可以在线访问多个txt和xml文件,其中的项目由一个参考号引用。它将这些文件中的信息与我设置的条件进行比较,然后将引用号添加到列表中。我要做的是把这个参考号转换成相关的名字。我有一个包含引用号和名称的文本文件,希望使用index()函数查找引用号,然后将关联的名称写入文本文件。我在解析它以便进行转换时遇到了问题。我的问题是列表是这样写的:

number    name\n
14        apple\n
27        anjou pear\n
36        asian pear\n
7645      langsat\n

因此,如果我只使用.split(),我会得到一些被拆分的名称。我尝试过用'\n'替换数字和名称之间的空白,然后将其拆分,但也没有效果。如果我将空格替换为“,”并将其拆分,我将结束包括下一行号['apple\n15']在内的名称,该行号将作为两行写入文本,并使我面临无法将其拆分为空白的相同问题。。。你知道吗

有什么建议吗???你知道吗

我现在已经实现了下面建议的Dict()函数,它接受我仍然在名称的末尾有\n。。。你知道吗

ttn = dict()
f=open('typeid2.txt', 'r')
    for line in f:
    number, name = line.split(None,1)
    ttn[number] = name

如果我调用ttn['14'],我得到'apple\n'


Tags: 文件函数nametxt名称numberapple列表
2条回答

正则表达式是非常强大和有用的,但它需要花很多时间来适应使用他们与一些权威。我建议您坚持使用split,这里是split的帮助信息,它描述了如何使用maxsplit值来限制split的数量。你知道吗

Help on built-in function split:

split(...)
S.split([sep [,maxsplit]]) -> list of strings

Return a list of the words in the string S, using sep as the
delimiter string.  If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator and empty strings are removed
from the result.

所以对于你的代码,假设你有一些行要分割

mytest = dict()
for each_line in data:
    number, name = line.split(None,1)
    mytest[number] = name

会有这样的回报吗

mytest {'27': 'anjou pear', '7645': 'langsat', 'number': 'name', '36': 'asian pear', '14': 'apple'} to access the help suppose you have some string mystring then just type

help(mystring.split)

我第一次尝试和这次尝试的不同是因为下面的评论。在我的第一次尝试中,name值上的前导空格被保留,但是,通过使用None,在第一次拆分时所有的空格字符都被删除了,这样就可以更具体地了解您要查找的内容。你知道吗

为此,可以使用re.findall()。你知道吗

input = "number    name\n14        apple\n27        anjou pear\n36        asian pear\n7645      langsat\n"
print re.findall("(\w+)\s+(.+)", input)

输出:

[('number', 'name'), ('14', 'apple'), ('27', 'anjou pear'), ('36', 'asian pear'), ('7645', 'langsat')]

相关问题 更多 >