gpt4 book ai didi

python - 使用 Python 解析和重新格式化 CSV/文本数据

转载 作者:行者123 更新时间:2023-12-01 06:00:06 24 4
gpt4 key购买 nike

抱歉,如果这是一个初学者的问题,但我对 python 没有太多经验,并且确实需要一些帮助来解决这个问题。如果有更好的编程语言来解决这个问题,我非常愿意听到它

我正在开发一个小项目,并且有两个数据 block ,格式彼此不同。它们都是保存为 CSV 文件的电子表格,我真的很想让一组与另一组匹配,而无需手动编辑所有数据。

我需要做的是浏览 CSV,并格式化保存的所有数据,如下所示:

10W

20E

15-16N

17-18S

像这样的格式(相应的行到相应的格式):

10,W

20,E

,,15,16,N

,,17,18,S

这样当它们作为电子表格打开时就可以复制

我能够将文件放入 python 中的字符串中,但我不确定如何正确编写一些内容来搜索数字连字符数字字母格式。

如果我能得到任何帮助,我将非常感激。谢谢

最佳答案

这听起来像是正则表达式的一个很好的用例。一旦您将行分成单独的字符串并去除空格(使用 s.strip() ),这些应该可以工作(我假设这些是基本方向;如果该假设是,您需要将 [NESW] 更改为其他内容不正确。):

>>> import re
>>> re.findall('\A(\d+)([NESW])', '16N')
[('16', 'N')]
>>> re.findall('\A(\d+)([NESW])', '15-16N')
[]
>>> re.findall('\A(\d+)-(\d+)([NESW])', '15-16N')
[('15', '16', 'N')]
>>> re.findall('\A(\d+)-(\d+)([NESW])', '16N')
[]

第一个正则表达式 '\A(\d+)([NESW])'仅匹配以数字序列开头,后跟大写字母 N、E、S 或 W 的字符串。第二个仅匹配以数字序列开头,后跟连字符,后跟另一个数字序列的字符串,后跟大写字母 N、E、S 或 W。强制其在开头匹配可确保这些正则表达式不匹配较长字符串的后缀。

然后你可以这样做:

>>> vals = re.findall('\A(\d+)([NESW])', '16N')[0]
>>> ','.join(vals)
'16,N'
>>> vals = re.findall('(\d+)-(\d+)([NESW])', '15-16N')[0]
>>> ',,' + ','.join(vals)
',,15,16,N'

关于python - 使用 Python 解析和重新格式化 CSV/文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com